2
嗨,我是新來的嘲笑。莫克部分類像在犀牛Mocks
我有一個類:
public class Car
{
public virtual void Register() {
...
Warrant();
}
public virtual void Warrant() {
...
}
}
我是想測試Register
電話Warrant
。使用RhinoMocks我想出了:
[Test]
public void RhinoCarTest() {
var mocks = new Rhino.Mocks.MockRepository();
var car = mocks.PartialMock<Car>();
mocks.ReplayAll();
car.Stub(x => x.Warrant());
car.Register();
car.AssertWasCalled(x => x.Warrant());
}
我甚至不知道這是否正確,但它似乎做的工作。我想在Moq做同樣的事情。我似乎無法找到一個部分Moq。
我想出了:
[Test]
public void MoqCarTest() {
var car = new Mock<Car>();
car.Setup(x => x.Warrant());
car.Object.Register();
car.Verify(x => x.Warrant());
}
這並不即使工作。有人能指引我朝着正確的方向嗎?
嗨帕特里克斯蒂爾,謝謝你的回答。所以說這是正確的,說你忘了註冊方法,並使它存根返回你想要的測試。然後你只是測試功能是否正確。另一件事是,如果你說你不應該檢查方法被稱爲你是否說你最好不應該使用驗證? – AnonyMouse
如果註冊方法是您想要測試的內容,那麼您會刪除權證方法,以便其中的任何錯誤不會影響您對註冊表的單元測試。然後,你爲權證編寫一個單獨的單元測試。我使用Verify來確保在某些對象(通常是依賴項)上調用方法。例如:如果我有一個應該將數據保存到數據庫的類,我在我的「更新」調用過程中驗證我的模擬IReporitory的「保存」方法已被調用。同樣,我可以確保它不應該被調用。 – PatrickSteele
嗨帕特里克斯蒂爾,謝謝你的澄清。 – AnonyMouse