2012-10-23 136 views
4

我正在嘗試Moq,並且我陷入了一個非常基本的例子。我想模擬一個非常簡單的界面I輸入:真正基本的moq示例失敗

namespace Example 
{ 
    public interface IInput 
    { 
     int SomeProperty { get; set; } 
    } 
} 

這似乎是一個非常簡單的工作。但是,我得到一個編譯錯誤,當我試着模擬它在下面的測試代碼:。

using Moq; 
using NUnit.Framework; 

namespace FirstEniro._Test 
{ 

    [TestFixture] 
    class TestFirstClass 
    { 
     [Test] 
     public void TestConstructionOk() 
     { 
      var mock = new Mock<IInput>(); 
      mock.Setup(r => r.SomeProperty).Returns(3); 

      var x = new FirstClass(mock); 

      Assert.That(x, Is.EqualTo(3)); 
     } 
    } 
} 

編譯器說:「不能從Moq.Mock<Example.IInput>轉換爲<Example.IInput> 我看不到我在做什麼錯誤請幫我

回答

12

使用Object模擬的屬性來檢索模擬對象的實例。

var x = new FirstClass(mock.Object); 

在Moq的框架Mock是不是你(在犀牛製品等)嘲諷什麼的一個實例。

+0

謝謝。你剛剛指出了我的問題:我被Rhino Mocks的「污染」體驗:-) – Morten

+0

@Morten這是因爲我從Rhino切換到Moq時遇到同樣的問題:) –

3

使用Object財產上Mock情況下獲得實際的嘲笑對象。

var x = new FirstClass(mock.Object); 

Mock類用於爲設置了方法/ VE rifications。 由於C#編譯器限制,您需要使用Object訪問器。您可以投票支持Microsoft Connect(請參閱QuickStart中的說明)。