0

在为消耗 a 的函数编写单元测试时,List<Microsoft.Bing.Speech.RecognitionPhrase> 我面临以下错误:

非虚拟(在 VB 中可覆盖)成员的无效设置:x => x.Confidence

读完这里后,我知道这是因为该属性不是虚拟的。我一直在网站上阅读有关接口、包装器、虚拟器的信息……但没有成功。

我可以访问RecognitionPhrase [from metadata]它,public Confidence Confidence { get; }所以这里没有set。我试图创建 apublic interface IRecognitionPhrase和 a public class RecognitionPhrase : IRecognitionPhrase,但在最后的转换中它说它不能将我的 RecognitionPhrase 转换为 Microsoft.Bing.Speech.RecognitionPhrase。

我读过一些关于反射的东西,但它似乎适用于私人二传手而不是没有二传手。

我现在没有主意了。任何方向都非常感谢(当然,如果有人已经嘲笑,List<Microsoft.Bing.Speech.RecognitionPhrase>请评论你是怎么做到的)谢谢

我愿意使用任何其他测试框架。

4

1 回答 1

0

我终于使用反射解决了它......但不是模拟的反射(抛出异常)

        //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);
于 2018-04-18T10:00:09.590 回答