我可以像在VS调试器中一样模拟List<Microsoft.Bing.Speech.RecognitionPhrase的值>吗?



为消耗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);

最新更新