2012-02-14 48 views
0

我對此很陌生,所以毫無疑問,我正在做一些愚蠢的事情。創建我的第一個模擬對象時出錯

我想創建一個模擬對象:

mockCurrencyConversion = mocks.NewMock<ICurrencyConversion>(); 

,並收到此錯誤:

The non-generic method 'NMock2.Mockery.NewMock(System.Type)' cannot be used with type arguments

ICurrencyConversion:

public interface ICurrencyConversion 
{ 
    decimal convertCurrency(string fromCurrency, string toCurrency, decimal amount); 

    int addNumbers(int i, int j); 

    decimal getRate(CurrencyRateResponse rates, string fromCurrency); 

    CurrencyRateResponse getCurrencyRates(); 

    HttpWebRequest GetWebRequest(string formattedUri); 
} 

我的測試代碼:

[TestFixture] 
public class WhygoTest 
{ 
    private Mockery mocks; 
    private ICurrencyConversion mockCurrencyConversion; 

    [SetUp] 
    public void SetUp() 
    { 
     mocks = new Mockery(); 
     mockCurrencyConversion = mocks.NewMock<ICurrencyConversion>(); 

    } 

    [Test] 
    public void MyAddTest() 
    { 
     var cc = new CurrencyConversion(); 

     Assert.AreEqual(cc.addNumbers(1, 2), 3); 
    } 
} 
+0

錯誤似乎很清楚,我!它說你不能將類型參數傳遞給該方法,而是它需要一個類型爲「System.Type」的參數。你嘗試過嗎? – 2012-02-14 10:07:27

回答

1

使用NewMock()方法與類型作爲參數:

mockCurrencyConversion = 
    (ICurrencyConversion) mocks.NewMock(typeof(ICurrencyConversion)); 
+0

感謝您的這一點,我現在得到一個錯誤 - 不能隱式地將類型'對象'轉換爲'ICurrencyConversion'。存在明確的轉換(您是否缺少演員?) – iKode 2012-02-14 10:12:22

+0

您可以使用我的答案中更新後的代碼顯式轉換爲'ICurrencyConversion'。 – 2012-02-14 10:14:51