aia*_*tag 2 .net c# interface moq
所以我有以下代码:
interface Parent1
{
void Foo();
}
interface Parent2
{
void Foo();
}
interface ChildInterface : Parent1, Parent2
{
}
Run Code Online (Sandbox Code Playgroud)
我想模拟 ChildInterface 并设置它的 Foo()。所以我使用 Moq 来做到这一点:
var c = new Mock<ChildInterface>(MockBehavior.Strict);
c.Setup(p1 => ((Parent1)p1).Foo());
c.Setup(p2 => ((Parent2)p2).Foo());
Run Code Online (Sandbox Code Playgroud)
如果不进行显式转换,它就不能接受。从this SO question的解释中。所以我这样做了。它编译没有错误!
但是在运行它时,它会抛出一个 InvalidCastException
这是堆栈跟踪:
at lambda_method(Closure )
at Moq.Mock.GetInterceptor(Expression fluentExpression, Mock mock)
at Moq.Mock.<>c__DisplayClass19`1.<Setup>b__18()
at Moq.PexProtector.Invoke[T](Func`1 function)
at Moq.Mock.Setup[T](Mock`1 mock, Expression`1 expression, Func`1 condition)
at Moq.Mock`1.Setup(Expression`1 expression)
Run Code Online (Sandbox Code Playgroud)
您对这如何在 Moq 中工作有任何想法吗?
尝试这个:
c.As<Parent1>().Setup(p1 => p1.Foo());
c.As<Parent2>().Setup(p2 => p2.Foo());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
857 次 |
| 最近记录: |