2016-05-18 8 views
1

Я тестирующих этот заводUnit Test с асинхронным неубедительны с FluentAssertions и 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?

UPDATE 19/05/16

Я установил методы испытаний, чтобы вернуть Task вместо пустоты и испытание бросает NullReferenceExceptions

+2

Первое, что нужно исправить - измените свой метод тестирования, чтобы вернуть 'Задача', а не' void'. Это может быть не все, что вам нужно сделать, но вы обязательно должны это сделать. –

+0

Thanks =] id Works. И это заставляет мои асинхронные тесты работать. Теперь у меня есть исключение NullReferenceObject. – Jedi31

+0

Вы должны изменить ваш вопрос с помощью обновленной информации или удалить свой вопрос. –

ответ

2

Я просто скопировать/вставить код и добавил пару пустых интерфейсов и классов для отсутствующих типов. Испытания проводились просто отлично.

Что касается вашего вопроса: «Как проверить асинхронные вызовы с помощью NSubstitute и FluentAssertions?», Вот как проверить исключения из метода async.