CSharp - C# 部分模拟具体类的方法

  显示原文与译文双语对照的内容

 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);



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

时间: 原作者:

Microsoft假垫片应用于以下用途: https://msdn.microsoft.com/en-us/library/hh549175.aspx#shims

...