2012-02-14 61 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

相关问题