lab*_*roo 7 c# unit-testing nullable moq mocking
我有这门课:
public class TestClass
{
public TestClass(int? foo, string bar)
{
//..Something
}
}
Run Code Online (Sandbox Code Playgroud)
我试图用这样的MOQ来模拟它
var mockA = new Mock<A>(new object[] {(int?)1, string.Empty})
Run Code Online (Sandbox Code Playgroud)
或这个,
var mockA = new Mock<A>(new object[] {1 as int?, string.Empty})
Run Code Online (Sandbox Code Playgroud)
即使这样
var mockA = new Mock<A>(new object[] {(int?)null, string.Empty})
Run Code Online (Sandbox Code Playgroud)
当我试图得到这样的对象
var objA = mockA.Object
Run Code Online (Sandbox Code Playgroud)
它抛出了这个例外
无法实例化类的代理:TestClass.找不到与给定参数匹配的构造函数:System.Int32,System.String
(对于第三个,它抛出空引用异常)
如何使它识别第一个参数是Nullable System.Int32类型而不是System.Int32.
(请忽略我正在嘲笑一个类,而不是一个接口.)
为了使用Moq模拟对象,对象本身必须具有
您想要模拟的方法必须是public空构造函数.virtual为了被覆盖.
编辑:
我正在运行Moq v4.0.20926(来自NuGet的最新版本)以及以下工作:
[TestMethod]
public void TestMethod1()
{
var mock = new Mock<TestClass>(new object[] {null, null});
mock.Setup(m => m.MockThis()).Returns("foo");
Assert.AreEqual("foo", mock.Object.MockThis());
}
public class TestClass
{
public TestClass(int? foo, string bar)
{
}
public virtual string MockThis()
{
return "bar";
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9517 次 |
| 最近记录: |