Снова на Rhino Mocks Noob Wall
mockUI.Expect( x => x.Update( new Frame[] {Frame.MakeIncompleteFrame(1, 5)} ) );
Это именно тот аргумент, который мне нужно сопоставить. С помощью операторов трассировки я убедился, что это также фактический результат, т. е. код ведет себя так, как предполагалось, но тест не согласен. RhinoMocks отвечает
TestBowlingScorer.TestGamePresenter.TestStart:
Rhino.Mocks.Exceptions.ExpectationViolationException : IScoreObserver.Update([Frame# 1, Score = 0 Rolls [ 5, PENDING, ]]); Expected #1, Actual #0.
Объект Frame содержит несколько свойств, но пока не переопределяет Equals() (переопределение ToString() показано выше). Обновление получает массив фреймов; Как настроить это ожидание? Я вижу ограничение Is.Matching... не знаю, как его использовать, или, скорее, меня беспокоит его многословный характер.
У меня есть вспомогательный пользовательский Assert в стиле NUnit.
public static void AssertFramesAreEqual(Frame[] expectedFrames, Frame[] actualFrames)
{
// loop over both collections
// compare attributes
}