Я пытаюсь лучше познакомиться со структурой Rhinomocks и пытаюсь понять методы Expect для Rhinomocks.
Вот модульный тест, который я написал:
[TestMethod]
public void Create_ValidModelData_CreatesNewEventObjectWithGivenSlugId()
{
//Arrange
var eventList = new List<Event>() { new Event() { Slug = "test-user" } };
_stubbedEventRepository.Stub(x => x.GetEvents())
.Return(eventList);
_stubbedEventRepository
.Expect(x => x.SaveEvent(eventList.SingleOrDefault()))
.Repeat
.Once();
var controller = new EventController(_stubbedEventRepository);
EventViewModel model = new EventViewModel();
//Act
//controller.Create(model); COMMENTED OUT
//Assert
_stubbedEventRepository.VerifyAllExpectations();
}
Мне показалось, что этот код будет пропущен, только если метод SaveEvent (...) get вызывается только один раз. Однако с закомментированным controller.Create (модель) тест все равно проходит. Внутри controller.Create (model) вызывается метод SaveEvent ().
Я попробовал следующее:
_stubbedEventRepository
.Expect(x => x.SaveEvent(eventList.SingleOrDefault()));
Но это все равно проходит каждый раз, так что я делаю неправильно, переполнение стека? Источники, на которые я смотрел онлайн, не смогли мне помочь. Почему VerifyAllExpectations () дает успешный модульный тест?
Спасибо!
Вот тело конструктора контроллера:
public EventController(IEventRepository eventRepository)
{
_eventRepository = eventRepository;
}
редактирование:
// member variables
private IEventRepository _stubbedEventRepository;
[TestInitialize]
public void SetupTests()
{
_stubbedEventRepository = MockRepository.GenerateStub<IEventRepository>();
}