我正在为一个遵循MVP模式的小应用程序编写测试。
从技术上讲,我知道我应该在编写代码之前编写测试,但我需要快速智能地创建一个演示应用程序,所以我现在在进入真正的开发之前回到测试中。
简而言之,我正在尝试测试presenter,但是由于Internal.ExpectationException的原因,我甚至无法运行空测试。
异常在意外调用事件赋值时引发。
下面是presenter类,
public LBCPresenter(IView view, IModel model)
{
m_model = model;
m_model.BatteryModifiedEvent += new EventHandler(m_model_BatteryModifiedEvent);
}模型接口
public interface IModel
{
event EventHandler BatteryModifiedEvent;
}这是测试类,我看不到我遗漏了什么,我告诉NMock期待这个事件……
[TestFixture]
public class MVP_PresenterTester
{
private Mockery mocks;
private IView _mockView;
private IViewObserver _Presenter;
private IModel _mockModel;
[SetUp]
public void SetUp()
{
mocks = new Mockery();
_mockView = mocks.NewMock<IView>();
_mockModel = mocks.NewMock<IModel>();
_Presenter = new LBCPresenter(_mockView, _mockModel);
}
[Test]
public void TestClosingFormWhenNotDirty()
{
Expect.Once.On(_mockModel).EventAdd("BatteryModifiedEvent", NMock2.Is.Anything);
//makes no difference if following line is commented out or not
//mocks.VerifyAllExpectationsHaveBeenMet();
}
}每次运行测试时,我都会得到相同的期望异常。
有什么想法吗?
发布于 2010-04-27 18:38:11
我认为这是一个时间问题-你在测试设置中调用presenter构造函数-这意味着事件添加在你的测试设置EventAdd期望之前发生。
如果您将调用移动到EventAdd预期之下的presenter构造函数,它应该可以工作
https://stackoverflow.com/questions/2427272
复制相似问题