Rhino Mocks - AssertWasCalled: Как улучшить нечеткое диагностическое сообщение при неверных аргументах

IMHO, Rhino Mocks выдает нечеткое диагностическое сообщение, когда AssertWasCalled используется для проверки того, что метод был вызван с определенным аргументом.

Пример:

interface ISomeInterface
{
    void Write(string s);
}

[TestFixture]
public class SomeTests
{
    [Test]
    public void WriteShouldBeCalledWithCorrectArguments()
    {
        // Arrange
        var mock = MockRepository.GenerateMock<ISomeInterface>();
        var sut = new SomeClass(mock);

        // Act
        sut.DoSomething();

        // Assert
        mock.AssertWasCalled(x => x.Write(Arg<string>.Is.Equal("hello")));
    }
}

Теперь, если тест завершился неудачно с это сообщение ...

Rhino.Mocks.Exceptions.ExpectationViolationException: ISomeInterface.Write (равно hello); Ожидаемый № 1, Фактический № 0.

... вы не можете знать, не работает ли он, потому что

A. "Запись" никогда не вызывается -или-
B. Фактически вызывается «Write», но с неверным аргументом

Если бы B был причиной сбоя, то было бы намного яснее, если бы сообщение читалось примерно так:

Rhino.Mocks.Exceptions .ExpectationViolationException: ISomeInterface.Write (string arg): Метод был вызван, но с неверными аргументами: Expected: hello, Actual: bye

Могу ли я исправить этот недостаток сам (путем написания пользовательских сопоставителей для Rhino каким-либо образом) или я просто нужно написать ручной макет для этого?

11
задан skaffman 26 February 2011 в 14:24
поделиться