【发布时间】:2020-03-29 08:45:19
【问题描述】:
我有一个类,我想测试一个具体类 (MyClient) 的注入位置。
private readonly MyClient _client;
public Sync(MyClient client)
{
_client = client;
}
我们使用 xUnit、AutoFixture 和 FakeItEasy 进行测试。在向类注入接口时,这一切都很好。
但是,当使用以下测试设置时
[Theory]
[AutoFakeData]
public async Task It_should_invoke_client(
[Frozen]MyClient geoClient,
[Frozen]ILogger logger,
Sync sync)
{
// Act
await sync.Run(null, logger);
//Assert
A.CallTo(() => myClient.SyncAllAsync(A<CancellationToken>.Ignored)).MustHaveHappenedOnceExactly();
}
伪造的GeoClient 不会注入sync 参数。创建的sync 表明注入的MyClient 不是Faked 对象。
System.ArgumentException : Some.Namespace.MyClient 类型的对象“Some.Namespace.MyClient”未被识别为假对象。
通过sync 调试时,我发现这是正确的。一个“正常”MyClient 已被注入到被测系统中。
根据我从文档中了解到的情况,这应该可以工作。我可能遗漏了一些明显的步骤,但找不到。
【问题讨论】:
标签: c# xunit autofixture fakeiteasy