具体方法的部分模拟 class
partial mocking of methods of concrete class
BTPhysicalAccount testerInstance = new BTPhysicalAccount(IvirtualAccounts, BTmarketIn, int);
我想测试这个class的一个方法。 BTmarketIn 是一个具体的 class 并且这个 class 中的一个方法被用于该被测方法。所以我需要模拟那个方法因此我试过这个:
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);
它一直抛出空异常错误,经过一些研究我意识到你不能模拟非虚拟方法。
所以我确实有那个 BTMarketIn class IMarketInfo 的接口 class。现在我可以模拟这个接口的一个实例,但我需要一个 BTMarketIn 实例作为构造函数参数传递。我该如何解决这个问题?
Microsoft Fakes Shims 应该适用于此:https://msdn.microsoft.com/en-us/library/hh549175.aspx#shims
BTPhysicalAccount testerInstance = new BTPhysicalAccount(IvirtualAccounts, BTmarketIn, int);
我想测试这个class的一个方法。 BTmarketIn 是一个具体的 class 并且这个 class 中的一个方法被用于该被测方法。所以我需要模拟那个方法因此我试过这个:
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);
它一直抛出空异常错误,经过一些研究我意识到你不能模拟非虚拟方法。 所以我确实有那个 BTMarketIn class IMarketInfo 的接口 class。现在我可以模拟这个接口的一个实例,但我需要一个 BTMarketIn 实例作为构造函数参数传递。我该如何解决这个问题?
Microsoft Fakes Shims 应该适用于此:https://msdn.microsoft.com/en-us/library/hh549175.aspx#shims