带构造函数参数的最小起订量

mag*_*gol 5 .net c# ninject moq ninject-2

我有一个工厂,如下所示:

public IFoo GetFoo(IFile file)
{
  return _kernel.Get<IFoo>(new ConstructorArgument("file", file));
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,直到我使用 Moq 来模拟IFoo. 在模拟中没有名为 file 的构造函数参数,我得到一个 Ninject.ActivationException。

我应该如何解决这个问题?

Pat*_*ele 3

您应该在测试期间嘲笑您的工厂。希望“GetFoo”方法是工厂接口的一部分。模拟工厂,然后您可以设置工厂以返回您想要的任何 IFoo(测试 IFoo 或模拟 IFoo)。