我正在尝试测试注入的服务是否在我正在测试的服务中使用,并想知道这是否可能?
public class MyService
{
private readonly IInjectedService _injectedservice;
public MyService(IInjectedService injectedService1)
{
_injectedservice = injectedService1
}
public string Method1(int value)
{
_injectedservice.Generate();
}
}
我有 UnitTest 来测试 MyService 类,但我想确定 InjectedService 是否在 MyService 中使用或运行。在我的测试中,我模拟 IInjectedService InjectedService1 服务通过
你基本上有两种选择来处理这个问题。一种方法是创建您自己的
IInjectedService
的“假”实现,然后在测试中使用您想要的任何逻辑(例如在内部跟踪布尔值以检测它是否被调用并将其暴露在对象中)。我不会在这里介绍这一点,除非您想采用这种方法(让我知道)。
另一种更常见的方法是仅使用模拟库。下面的示例依赖于 NSubstitute。
public sealed class MyServiceTests
{
[Fact]
public void CallingMethod1GeneratesInjectedService()
{
// Arrange
var injectedService = Substitute.For<IInjectedService>();
var myService = new MyService(injectedService);
// Act
myService.Method1(1);
// Assert
injectedService.Received().Generate();
}
}
(确保根据实际对象和方法的名称更改测试名称,因为显然现在没有多大意义)
如果需要,您还可以选择使用具有类似 API 的其他模拟库。