Как создать частичный макет
Вы создаете частичный макет, макет, который реализует абстрактный класс и предоставляет возможности для виртуальных и абстрактных частей класса.
_fooSut = _mockRepository.PartialMock<Foo>(argumentOne, argumentTwo);
И вы называете имущество, которое, как вы сказали, было виртуальным , FirstName
.
_result = _fooSut.FirstName;
Но вы не заглушаете виртуальный вызов, поэтому он возвращает значение по умолчанию! В этом случае null
. Вам нужно добавить этот вызов в ваш контекст.
_fooSut.Stub(x => x.FirstName).Return("Lance");
Как проверить поведение
Лэнс, я собираюсь попугай the_joric * вопрос 1019 * ... Какое поведение вы пытаетесь проверить ? Тест, который вы пишете выше, только проверяет, что вы можете настроить макет.
Я могу только начать догадываться, как вы реализуете конкретные классы для этого реферата. Итак, может быть, вы хотите проверить, что каждая реализация предоставляет ненулевое значение для этого свойства? В этом случае вы хотели бы использовать поведение .
[Behaviors]
public class ConcreteFoo
{
It should_set_a_non_null_first_name = () => _fooSut.FirstName.ShouldNotBeNull();
protected static Foo _fooSut;
}
И каждая реализация Foo
может быть проверена на соответствие этому поведению.
[Subject(typeof(DefaultFoo))]
public class When_using_a_default_foo
{
Behaves_like<ConcreteFoo> a_concrete_impl_of_foo;
protected static DefaultFoo _fooSut = new DefaultFoo();
}
[Subject(typeof(CustomFoo))]
public class When_using_a_custom_foo
{
Behaves_like<ConcreteFoo> a_concrete_impl_of_foo;
protected static CustomFoo _fooSut = new CustomFoo();
}