我似乎遇到了问题,我有一个类 (LoginService) 在构造函数中接受 IUser。这是用于执行集成测试而不是单元测试,因此我不想模拟这些,我已经有一些单元测试,并且它们在使用带有夹具的 Moq 时工作得很好。

我设置了我的灯具:-

  var fixture = new Fixture();

然后我希望能够卡住 IUser 的一个版本,我尝试了以下操作但我无法让它工作,它提示它无法创建实例,可能是由于没有构造函数。
  var user = fixture.Freeze<IUser>();

所以我设法让它工作做以下
  IUser user = new User();  // Create my IUser manually
  fixture.Inject(user);

然后最后创建 sut 并且确实注入(inject)了实例。
  var sut = fixture.Create<LoginService>();

那么我这样做正确吗?我可以不使用 Freeze 吗,我应该继续手动创建我的 IUser 并将其注入(inject)夹具吗?

期待任何帮助或信息

最佳答案

是的,这是正确的——如果你想为 IUser 提供一个特定的 LoginService 实例,你必须注入(inject)它。

请记住, Inject 将影响 IUser 的所有后续请求(如果有)。

关于c# - AutoFixture:无法创建实例,可能没有公共(public)构造函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17421739/

10-13 07:03