Rhino Mocksは、特定の引数でメソッドが呼び出されたことを確認するためにAssertWasCalledが使用されたときに不明瞭な診断メッセージを生成します。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(ハローに等しいです)。期待される#1、実際の#0。
A.「書き込み」は
B.「書き込み」、実際に呼び出される - または - しかし、間違った引数
で呼び出されることはありませんので、それが失敗した場合
...あなたが知ることができませんBは、障害の原因になる場合は、メッセージがこのような何かを読んでいましたならば、それはあまり明確に次のようになります。
Rhino.Mocks.Exceptions.ExpectationViolationException:ISomeInterface.Write(文字列引数):メソッドが呼び出されたが、間違った題名ts:期待:こんにちは、実績:bye
私はこの不具合を(何らかの方法でRhinoのカスタムマッチャーを書いて)修正することができますか、またはこれを手動で書く必要がありますか?
Moqを試したり、状態ベースのテストを行うことを検討してください。 http://code.google.com/p/moq/ – TrueWill
残念ながら、Moqには同じ問題があります。 – Chris