使用Rhino Mocks 3.6,給定下面的代碼我希望AssertWasCalled斷言通過,但它不。取而代之的是失敗的斷言消息:犀牛嘲笑'AssertWasCalled測試方法模擬的屬性分配
「Rhino.Mocks.Exceptions.ExpectationViolationException: IBar.set_Model(7);預期#1,實際0#」。
嘗試IgnoreArguments()不會更改結果,但將IBar屬性更改爲方法並斷言該方法是使用參數調用的。
我在這裏錯過了什麼?
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Rhino.Mocks;
public interface IFoo { }
public interface IBar { int Model { get; set; } }
public class Bar : IBar { public int Model { get; set; } }
public class Foo : IFoo
{
public void MyMethod(IBar bar)
{
bar.Model = 7;
}
}
[TestClass]
public class TestFoo
{
[TestMethod]
public void MyMethod()
{
var foo = new Foo();
var mockBar = MockRepository.GenerateStub<IBar>();
foo.MyMethod(mockBar);
mockBar.AssertWasCalled(b => b.Model = 7);
}
}
我把這個標記爲答案,因爲切換到模擬確實解決了我的問題,而且我相信這是它失敗的原因。但是,我認爲重要的是要注意我沒有設定預期,而是斷言發生了事情。如果規則是你必須有嘲笑做到這一點,那將是一回事,但使用存根這對工作很好的方法,所以有一些不一致。 –