C# 莫克转换它。伊萨尼<;例外情况>;对它。伊萨尼<;字符串>;期望
我将Moq用于单元测试,我已经建立了这样的期望:C# 莫克转换它。伊萨尼<;例外情况>;对它。伊萨尼<;字符串>;期望,c#,unit-testing,mocking,moq,C#,Unit Testing,Mocking,Moq,我将Moq用于单元测试,我已经建立了这样的期望: myMock.Expect(w => w.MyMethod(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<System.Excep
myMock.Expect(w => w.MyMethod(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<System.Exception>(), null))
.Returns(myResult);
这可以正常构建和运行,但是VerifyAll()无法通过,我得到的错误是:
Moq.MockVerificationException : The following expectations were not met:
IMyClass l => l.MyMethod(It.IsAny<string>(), It.IsAny<string>(),
It.IsAny<string>(), It.IsAny<String>(), null)
Moq.MockVerificationException:未达到以下预期:
IMyClass l=>l.MyMethod(It.IsAny(),It.IsAny(),
It.IsAny(),It.IsAny(),null)
因此,出于某种原因,它将异常更改为字符串
以前有没有人见过这个/知道它为什么这样做,我能做些什么来修复它/解决它
谢谢 好的,所以我创建了一个测试方法,其中有一个异常作为参数,并以上面的方式使用moq调用它,它工作得很好。因此,将异常作为参数本身传递似乎没有问题 我还将第一个参数从枚举值更改为It.IsAny枚举。所以从
myMock.Expect(w =>
w.MyMethod(**MyEnum.Value**,
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<System.Exception>(),
null))
.Returns(myResult);
myMock.Expect(w=>
w、 MyMethod(**MyEnum.Value**,
It.IsAny(),
It.IsAny(),
It.IsAny(),
空)
.返回(myResult);
到
myMock.Expect(w=>
w、 MyMethod(**It.IsAny()**,
It.IsAny(),
It.IsAny(),
It.IsAny(),
空)
.返回(myResult);
我得到的结果是:
IMyClass l =>
l.MyMethod(IsAny<MyEnum>(),
IsAny<MyEnum>(),
IsAny<MyEnum>(),
IsAny<MyEnum>(),
null)
IMyClass l=>
l、 MyMethod(IsAny(),
IsAny(),
IsAny(),
IsAny(),
空)
因此,它看起来像是采用了第一个参数的类型,并出于某种原因将其应用于所有其他参数….啊,这是一个新手错误!转换只是一种转移注意力的手段,目的是让我在互联网上四处寻找不存在的疯狂答案 我没有将myMock.Object传递给调用命令
myMock.Expect(w =>
w.MyMethod(**It.IsAny<MyEnum>()**,
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<System.Exception>(),
null))
.Returns(myResult);
IMyClass l =>
l.MyMethod(IsAny<MyEnum>(),
IsAny<MyEnum>(),
IsAny<MyEnum>(),
IsAny<MyEnum>(),
null)