私は基本的に関数をスタブ化したいのですが、参照型パラメーターに対して独自の等値比較子を定義しています。
関数をスタブしてデータを返したい。メソッドのパラメーターを、ReferenceEquals ではなく特定の値で比較したい。また、パラメーター参照型の equals オーバーライドを作成したくありません。以下はこれを達成する方法だと思いますが、例外が発生しています。これを行う別の方法や、ここで間違っていることはありますか?
例外メッセージ: System.Reflection.AmbiguousMatchException : あいまいな一致が見つかりました。
public class Parameter
{
public string Property1 { get; set; }
}
public interface IStubbable
{
string DoStuff(Parameter param);
}
public class ThisService
{
private IStubbable _stubbable;
public ThisService(IStubbable stubbable)
{
_stubbable = stubbable;
}
public string DoTheStuff(Parameter param)
{
return _stubbable.DoStuff(param);
}
}
[Test]
public void TestStubbing()
{
const string expectedResult = "Totes";
var iStub = MockRepository.GenerateStub<IStubbable>();
const string prop1 = "cool stub bro";
iStub
.Stub(x => x.DoStuff(Arg<Parameter>.Matches(y => y.Property1 == prop1)))
.Return(expectedResult);
var service = new ThisService(iStub);
var result = service.DoTheStuff(new Parameter() {Property1 = prop1});
Assert.AreEqual(expectedResult, result);
}