Rhino mocks - метод assert был вызван с заданным параметром

Мой метод тестирования выглядит так:

[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 ()?


person mgamer    schedule 24.06.2009    source источник


Ответы (2)


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

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)

person MLT    schedule 03.12.2009

Вам нужно получить _sut, чтобы использовать имитацию IPropertiesManager.

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

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

person Shiraz Bhaiji    schedule 25.06.2009