[英]Calling Assert.Inconclusive() in an async unit test is reported as a fail
[英]Unit Test with Async is Inconclusive with FluentAssertions and NSubstitute
我正在测试这家工厂
public class ContratoFactory : IContratoFactory
{
private readonly IContratoPodeSerCriadoValidation _contratoPodeSerCriadoValidation;
public ContratoFactory(IContratoPodeSerCriadoValidation contratoPodeSerCriadoValidation)
{
_contratoPodeSerCriadoValidation = contratoPodeSerCriadoValidation;
}
public async Task<IValidationResult> Build(Contrato entity)
{
try
{
var result = _contratoPodeSerCriadoValidation.Valid(entity);
}
catch (Exception ex)
{
// throw
}
}
public async Task AdicionarLocalBase(Contrato entity)
{
}
}
这是我的测试课
[TestClass]
public class ContratoFactoryTests
{
private IContratoPodeSerCriadoValidation _contratoPodeSerCriadoValidation;
private ContratoFactory _contratoFactory;
[TestInitialize]
public void Initialize()
{
_contratoPodeSerCriadoValidation = Substitute.For<IContratoPodeSerCriadoValidation>();
_contratoFactory = new ContratoFactory(_contratoPodeSerCriadoValidation);
}
[TestMethod]
public async Task AoSerCriadoOContratoDeveSerValidado()
{
var contrato = ContratoValues.ContratoComEmpresaENomeValido;
await _contratoFactory.Build(contrato);
_contratoPodeSerCriadoValidation.Valid(contrato).Received();
}
}
当我运行测试时,thes无法运行,或返回“不确定”结果。
如何使用NSubstitute和FluentAssertions测试异步调用?
更新16/05/19
我修复了测试方法以返回Task而不是void的情况,并且测试抛出NullReferenceExceptions
我只是复制/粘贴了您的代码,并为缺少的类型添加了两个空接口和类。 开箱即用,测试就很好。
关于您的问题,“如何使用NSubstitute和FluentAssertions测试异步调用?”,这是如何检查异步方法中的异常的方法。
Func<Task> action = async () => await _contratoFactory.Build(contrato);
action.ShouldThrow<SomeValidationFailedException>();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.