执行的最小起订量验证不起作用
本文关键字:验证 不起作用 执行 | 更新日期: 2023-09-27 18:10:48
我试图模拟我的内部虚拟方法。当我调试时,我可以看到我到达了我期望的地方,我的内部虚拟方法被执行,但测试失败了。此外,我验证了'this'上下文是代理而不是常规的类实例。
方法:
public void MyMethod() { MyInternalMethod() }
internal virtual void MyInternalMethod() {}
单元测试片段:
Because of = () => { myMock.Object.MyMethod() };
It should_run_inner_internal_virtual_MyInternalMethod = () =>
{
myMock.Verify(x => x.MyInternalMethod(),Times.Once());
};
我很感激你的帮助。
亲切的问候。
我不确定您的代码是否编译,但我认为由于Moq和测试中的类在不同的程序集中,您可能需要告诉测试对象的程序集,以使内部可见Moq的程序集。Internal只使方法/属性/类对该程序集可见。
尝试将此添加到AssemblyInfo.cs文件中(对于正在测试的程序集)
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
假设DynamicProxyGenAssembly2是你的Moq的程序集名称。如果您的测试也在不同的程序集中,那么您也需要使内部组件对该程序集中可见。我刚刚为它写了一个nunit测试,它通过了。
[Test]
public void ShouldCallMyInternalMethodFromMyMethod()
{
myMock = new Mock<MyClass>();
myMock.Object.MyMethod();
myMock.Verify(mockObj=> mockObj.MyInternalMethod(), Times.Once());
}