所以我使用Simple.Mocking來模擬我的測試中的一些接口。有些方法接收自定義對象Simple.Mocking使用自定義對象調用期望方法
public class MyObj
{
public int Attr { get; set; }
public override bool Equals(object obj)
{
return Equals(obj as MyObj);
}
public override int GetHashCode()
{
return Attr;
}
private bool Equals(MyObj myObj)
{
return Attr == myObj.Attr;
}
}
public interface IFoo
{
void Show(MyObj o);
}
public class ObjUnderTest
{
public ObjUnderTest(IFoo foo)
{
var o = new MyObj{ Attr = 1; };
foo.Show(o);
}
}
[TestClass]
public class TestClasse
{
[TestMethod]
public void TestShow()
{
var foo = Mock.Interface<IFoo>();
var myObj = new MyObj { Attr = 1 };
Expect.Once.MethodCall(() => foo.Show(myObj));
var objectUnderTest = new ObjUnderTest(foo);
AssertExpectations.IsMetFor(foo);
}
}
的問題是,測試總是失敗,即使Show
被稱爲與Attr
一個對象等於1。只有當我寫的期待像這樣通過:
Expect.Once.MethodCall(()=> foo.Show(Any<MyObj>.Value));
這不是我所需要的。我知道它失敗,因爲那些是不同的對象,但我已經嘗試覆蓋MyObj
Equals
和GetHashCode
沒有成功。 任何想法?
提供一個問題[MCVE] 。當前的例子不完整。 – Nkosi
@Nkosi完成! – fivunlm