首页 > 解决方案 > 如何在 nSubstitute 中模拟接口的只读“ushort”类型属性?

问题描述

我需要模拟一个具有只读“ushort”类型属性的接口。看起来 nSubstitute 不允许我设置这些属性。公共接口 IExampleInterface { ushort ID{ 获取;} ...... }

IExampleInterface mockObject = Substitute.For<IExampleInterface>();
mockObject.ID.Returns(0x12);  /// not allowed. error:
                              /// ushort does not contain a definition for 'Returns' 
                              /// and the best extension method overload 
                              /// 'SubstituteExtensions.Returns<int>(int, int, params int[])'
                              /// requires a receiver of type 'int'
mockObject.ID = 0x12;    /// not allowed

如果我将行更改为以下内容,它似乎可以工作。

(int)mockObject.ID).Returns(0x12);

这是解决原始错误的正确方法吗?

标签: unit-testingnsubstitute

解决方案


默认情况下,0x12文字被视为int类型。

从这里开始,Returns(0x12)表达式的返回类型也是int.

因此,您必须明确指定所需的类型。

mockObject.Id.Returns<ushort>(0x12);

推荐阅读