为消耗List<Microsoft.Bing.Speech.RecognitionPhrase>
的函数编写单元测试时,我遇到以下错误:
非虚拟(可在 VB 中覆盖(成员上的设置无效:x => x.信心
读完这里后,我明白这是因为该属性不是虚拟的。我一直在网站上阅读有关接口、包装器、虚拟的内容......但没有成功。
我可以访问RecognitionPhrase [from metadata]
,它有public Confidence Confidence { get; }
所以这里没有set
。我试图创建一个public interface IRecognitionPhrase
和一个public class RecognitionPhrase : IRecognitionPhrase
,但是在最终的转换中,它说它不能将我的识别短语转换为Microsoft.Bing.Speech.RecognitionPhrase。
我读过一些关于反思的文章,但它似乎适用于私人二传手,而不是没有二传手。
我现在没有想法了。非常感谢任何指示(当然,如果有人已经嘲笑过List<Microsoft.Bing.Speech.RecognitionPhrase>
请评论您是如何做到的(谢谢
我愿意使用任何其他测试框架。
我终于用反射解决了它......但不是模拟的反映(它抛出了一个异常(
//var mockFrase = new Mock<RecognitionPhrase>();
//PropertyInfo propertyInfo = mockFrase.GetType().GetProperty("Confidence");
//propertyInfo.SetValue(mockFrase, Confidence.High);
相反,使用对真实对象的反射为我解决了问题:
var frase = new RecognitionPhrase();
PropertyInfo propertyInfo = frase.GetType().GetProperty("Confidence");
propertyInfo.SetValue(frase, Confidence.High);