2011-12-13 23 views
3

懲戒ConfigurationManager.AppSettings繼方向:http://www.telerik.com/help/justmock/advanced-usage-static-mocking.html與JustMock

我在嘲笑ConfigurationManager.AppSettings不成功。這裏是我使用的代碼...

[TestMethod] 
public void my_test() 
{ 
    // Arrange 
    var appSettings = new NameValueCollection { 
     { "test1", "one" } 
    }; 

    Mock.Arrange(() => ConfigurationManager.AppSettings) 
     .Returns(appSettings) 
     .MustBeCalled(); 

    // Act 
    var test1 = ConfigurationManager.AppSettings["test1"]; 

    // Assert 
    Assert.AreEqual("one", test1); 
} 

這是我收到的錯誤。

Assert.AreEqual失敗。預期:。實際:<(null)>。

是否有可能嘲笑這個對象?

我也在使用試用版。

回答

2

我只是想你的測試和它的工作如預期:

// Arrange 
var appSettings = new NameValueCollection { { "test1", "one" } }; 

Mock.Arrange(() => ConfigurationManager.AppSettings) 
    .Returns(appSettings) 
    .MustBeCalled(); 

// Act 
var test1 = ConfigurationManager.AppSettings["test1"]; 

// Assert 
Assert.AreEqual("one", test1); 

這裏請確保Configuration.AppSettings沒有在你的項目的一些靜態構造函數調用已經。

這裏要注意的是.NET期間探查攔截OnJITCompilationStarted這大火只有一次對於給定的成員。

此外,請確保您的分析器已正確配置,並且已安裝VS的JM插件。您可以通過Mock.IsProfilerEnabled檢查探查器是否啓用。

最後,你通常不需要使用Mock.SetupStatic(#TARGET_TYPE#),除非你正在做嚴格的模擬或者想僞造給定類型的靜態構造函數。當你將要做Mock.Arrange時,它會自動設置攔截器(如果還沒有的話)。

[注:我用的是最新版本]

+0

奇怪的是,我仍然無法使它工作。試驗中可能有限制嗎?我直接從模板創建了一個新的JustMock Test項目,但仍然無法通過。我甚至添加了這個(通過)Assert.IsTrue(Mock.IsProfilerEnabled); – joelnet

相關問題