部分嘲笑具体类的方法

时间:2016-12-01 14:28:08

标签: c# unit-testing nsubstitute

  BTPhysicalAccount testerInstance = new BTPhysicalAccount(IvirtualAccounts, BTmarketIn, int);

我想测试这个类的方法。 BTmarketIn是一个具体的类,该类中的方法用于该测试方法。所以我需要嘲笑那个方法因此我尝试了这个:

        var readerAsk = Substitute.ForPartsOf<BTMarketInfo>();
        readerAsk.When(x => x.GetAskPrice(Arg.Any<SymbolType>())).DoNotCallBase();
        readerAsk.GetAskPrice(Arg.Any<SymbolType>()).Returns(2000);
        readerAsk.When(x => x.GetBidPrice(Arg.Any<SymbolType>())).DoNotCallBase();
        readerAsk.GetBidPrice(Arg.Any<SymbolType>()).Returns(2000);

它一直抛出null异常错误,经过一些研究我意识到你不能模拟非虚方法。 所以我确实有一个BTMarketIn类IMarketInfo的接口类。现在我可以模拟这个接口的实例,但我需要一个BTMarketIn实例作为构造函数参数传递。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

Microsoft Fakes Shims应该适用于此:https://msdn.microsoft.com/en-us/library/hh549175.aspx#shims