ожидание установки риномок, юнит тест всегда проходит - PullRequest
2 голосов
/ 05 января 2012

Я пытаюсь лучше познакомиться со структурой 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>();
    }

1 Ответ

4 голосов
/ 05 января 2012

Если вы хотите проверить поведение тестируемого кода, вы будете использовать макет с соответствующим ожиданием и подтвердите это. Если вы хотите просто передать значение, которое, возможно, должно действовать определенным образом, но не является целью этого теста, вы будете использовать заглушку.

...