Rhino mocks - метод assert вызывается с заданным параметром - PullRequest
2 голосов
/ 25 июня 2009

Мой метод испытаний выглядит следующим образом:

[Test]
    public void Generated_CaseNumber_should_be_set_as_LastCaseNumber_in_PropertiesManager()
    {           

        String generatedCaseNumber = _sut.NextCaseNumber();

    }

Объект _sut зависит от макета объекта типа IPropertiesManager. Метод _sut.NextCaseNumber () должен сгенерировать уникальный CaseNumber, сохранить его в IPropertiesManager (используя метод UpdateLastCaseNumber ()) и затем вернуть сгенерированный CaseNumber.

Как мне утверждать, что _sut.NextCaseNumber () вызывал UpdateLastCaseNumber () для типа IPropertiesManager и передавал тот же параметр, который затем возвращал вызывающей стороне NextCaseNumber ()?

Ответы [ 2 ]

1 голос
/ 03 декабря 2009

Добавление чего-то подобного должно работать.

using (mocks.Record())
{
    Expect.On(mockObj).Call(mockObj.UpdateLastCaseNumber(param)).Return(param);
}
using (mocks.Playback())
{
    var expected = param;
    var actual = _sut.NextCaseNumber(param);
    Assert.AreEqual(expected, actual);
}

(mocks = новый MockRepository, mockObj = IPropertiesManager)

0 голосов
/ 25 июня 2009

Вы должны заставить свой _sut использовать макет IPropertiesManager.

Один из способов сделать это - изменить / создать новый конструктор _sut для получения IPropertiesManager.

При создании _sut для теста отправьте макет IPropertiesManager. При использовании его в реальном коде либо отправьте реальный объект, либо используйте другой конструктор, который создает IPropertiesManager.

...