私は AutoFixture AutoMoq を使用しています。これにより、クラスで使用されるすべてのインターフェイスのモックが大幅に簡素化され、初期化されます。
コンストラクターのコードが部分的にカバーされていることに気付きましたが、コンストラクターもカバーできるAutoMoqDataAttribute
ように変更ArgumentNullException
できますか?
public class ServiceTest
{
[Theory, AutoMoqData]
public async Task Do_Test_For_DoMethod(Service sut)
{
await sut.DoMethod();
}
}
AutoMoqData属性クラス、
public class AutoMoqDataAttribute : AutoDataAttribute
{
public AutoMoqDataAttribute()
: base(() => new Fixture().Customize(new AutoMoqCustomization()))
{
}
}
サービスクラスコード、
public class Service
{
private readonly IServiceClient _serviceClient;
private readonly ILogger<Service> _logger;
public Service(IServiceClient serviceClient, ILogger<Service> logger)
{
_serviceClient = serviceClient ?? throw new ArgumentNullException(nameof(serviceClient));
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
public async Task DoMethod()
{
await _serviceClient.Do();
}
}