我正在開發一個嘗試實現MVP模式using this example的asp.net(經典)應用程序。在試圖單元測試我的演講,並使用以下模式,僞代碼爲它看起來像這樣使用Moq驗證事件註冊
//base view interface
public interface IView
{
event EventHandler Init;
event EventHandler Load;
bool IsPostBack { get; }
void DataBind();
bool IsValid { get;}
}
//presenter psuedo code
public class SomePresenter
{
public SomePresenter(ISomeDomainService service, IView someView)
{
...
//HOW DO WE TEST/VERIFY THAT THIS REGISTRATION OCCURS?
someView.Init += OnInit;
someView.Load += OnLoad;
}
}
...
//consuming code that exercises the above code, that needs to be tested
var presenter = new SomePresenter(someDomainService, someView);
如何確認主持人是做什麼的預期,即註冊的初始化和加載事件?雖然這是很容易使用犀牛嘲笑Phil Haack's example做...
[Test]
public void VerifyAttachesToViewEvents()
{
viewMock.Load += null;
LastCall.IgnoreArguments();
viewMock.PostSaved += null;
LastCall.IgnoreArguments();
mocks.ReplayAll();
new PostEditController(viewMock,
this.dataServiceMock);
mocks.VerifyAll();
}
...我們如何能做到這一點使用最小起訂量?
+1 - 打我的頭對着同一堵牆。 – Gishu 2009-09-17 10:26:15