C# 无法验证对具有多个接口的模拟对象上的方法的调用

C# 无法验证对具有多个接口的模拟对象上的方法的调用,c#,unit-testing,moq,C#,Unit Testing,Moq,我正在尝试为TranslateResponse()编写单元测试 TranslateResponse()还有很多其他的翻译器,但是现在,我把它限制在一个。 BuildTranslator如下所示 public async Task<List<ITranslator>> BuildTranslators() { return new List<ITranslator>() { new PolicyTranslator() } } 验证

我正在尝试为
TranslateResponse()
编写单元测试

TranslateResponse()
还有很多其他的翻译器,但是现在,我把它限制在一个。
BuildTranslator
如下所示

public async Task<List<ITranslator>> BuildTranslators()
{
   return new List<ITranslator>()
   {
     new PolicyTranslator()
   }
}
验证调用仍然失败。 我走对了方向还是错过了什么

mockedPolicyTranslator.Verify(t => t.SetPolicy(new UnknownPolicy()), Times.AtLeastOnce);

参数匹配器需要放松

mockedPolicyTranslator.Verify(t => t.SetPolicy(It.IsAny<UnknownPolicy>()), Times.AtLeastOnce);
mockedPolicyTranslator.Verify(t=>t.SetPolicy(It.IsAny()),Times.AtLeastOnce);
因为当前使用的
newunknownpolicy()
实例不会匹配测试时传递的任何内容

mockedPolicyTranslator.Verify(t => t.SetPolicy(new UnknownPolicy()), Times.AtLeastOnce);
mockedPolicyTranslator.Verify(t => t.SetPolicy(It.IsAny<UnknownPolicy>()), Times.AtLeastOnce);