2010-03-05 63 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

相關問題