介紹
應用場景
public interface IViewBase
{
int ID { get; }
string Name { get; set; }
event EventHandler Init;
}
public class PresenterBase
{
public string Status { get; protected set; }
public PresenterBase(IViewBase view)
{
View = view;
Status = "Constructed";
}
protected IViewBase View{ get; private set;}
public void BindEventsInternal()
{
View.Init += view_Init;
BindEvents();
}
protected virtual void BindEvents()
{}
private void view_Init(object sender, EventArgs e)
{
Status = "Init";
}
}
具體的數據模型我就不定義了,因爲這個應用場景中暫時不考慮到模型。
private MockFactory _factory;
[TestInitialize]
public void TestInitialize()
{
_factory = new MockFactory();
}
[TestMethod]
public void TestMockMVP()
{
Mock<IViewBase> _View = _factory.CreateMock<IViewBase>();
//設置事件
_View.Expects.One.EventBinding(v => v.Init += null); //模擬方法
//若是泛型則寫法如下
//_View.Expects.One.EventBinding<類型>(v => v.Init += null);
PresenterBase presenter = new PresenterBase(_View.MockObject);
Assert.IsNotNull(presenter);
}
這樣模擬出的_View.MockObject相當於一個實現了IViewBase的具體類的實例。