2010-03-05 76 views
2

我正在使用Web窗体MVP编写一个DotNetNuke用户控件。当在我的单元测试中引发'SubmitContactUs'事件时,演示者尝试在模态上设置'消息'属性。但是,演示者中View.Modal为null。Web窗体MVP演示者的单元测试有一个空模型

Web窗体MVP框架不应该在演示者中自动构建新的View.Model对象吗?这可能是因为我的测试中的'安排'部分缺少主讲人需要的东西。任何帮助,将不胜感激。

这里是我的测试:

using System; 
using AthleticHost.ContactUs.Core.Presenters; 
using AthleticHost.ContactUs.Core.Views; 
using Xunit; 
using Moq; 

namespace AthleticHost.ContactUs.Tests 
{ 
    public class ContactUsPresenterTests 
    { 
     [Fact] 
     public void ContactUsPresenter_Sets_Message_OnSubmit() 
     { 
      // Arrange 
      var view = new Mock<IContactUsView>(); 
      var presenter = new ContactUsPresenter(view.Object); 
      // Act 
      view.Raise(v => v.Load += null, new EventArgs()); 
      view.Raise(v => v.SubmitContactUs += null, 
       new SubmitContactUsEventArgs("Chester", "Tester", 
        "[email protected]", "http://www.test.com", 
        "This is a test of the emergancy broadcast system...")); 
      presenter.ReleaseView(); 

      // Assert 
      Assert.Contains("Chester Tester", view.Object.Model.Message); 
     } 
    } 
} 

回答

4

只是一个猜测 - 但也许你需要调用“SetupAllProperties()”的演讲之前,嘲笑视图通常会设置Model属性的方法?

view.SetupAllProperties(); 
+0

谢谢!我在创建模拟的地方添加了该行(var view = new Mock (); ),并且效果很好。 – jacksonakj 2010-03-08 06:31:32

+0

这告诉模拟对象开始跟踪属性值。否则,它会忘记设置的值。这里的文档:http://code.google.com/p/moq/wiki/QuickStart#Properties其他人也有同样的问题:http://tinyurl.com/3y9x2gj – Helephant 2010-07-20 17:18:39

相关问题