Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Расположение, действие, утверждает. Tho, я использую MoQ и предпочитаю Расположение, Утверждаю, закон, Проверяю. Мне нравится настраивать все, прежде чем я буду действовать, вместо того, чтобы сделать тяжелый подъем в конце.
Для.NET 2.0, я рекомендую модель записи/воспроизведения. Нам нравится это, потому что это разделяет ясно Ваши ожидания от Ваших проверок.
using(mocks.Record())
{
Expect.Call(foo.Bar());
}
using(mocks.Playback())
{
MakeItAllHappen();
}
Если бы Вы используете.NET 3.5 и C# 3, то я рекомендовал бы быстрый синтаксис.
Интересный вопрос! Мое собственное предпочтение для основанного на отражении синтаксиса (что я предполагаю, что Вы подразумеваете под Стандартным Синтаксисом). Я утверждал бы, что это является самым лишенным трения, поскольку это не добавляет много дополнительного кода: Вы ссылаетесь на тупики непосредственно в Ваших интерфейсах, как будто они были правильно реализованы.
Мне действительно также вполне нравится Быстрый синтаксис, хотя это является довольно громоздким. Синтаксис Записи/Воспроизведения является столь же громоздким как Быстрый синтаксис (если не больше, по-видимому), но менее интуитивный (мне, по крайней мере). Я только использовал NMock2, таким образом, синтаксис Записи/Воспроизведения немного чужд мне, пока Быстрый синтаксис довольно знаком.
Однако как это сообщение предполагает, если Вы предпочитаете разделять свои ожидания от Ваших проверок/утверждений, необходимо выбрать Быстрый синтаксис. Это - весь вопрос стиля и персонального предпочтения в конечном счете :-)