Я использую TDD-подход с xUnit 2, NSubstitute, AutoFixture, FluentAssertions для моих модульных тестов.Единичные тесты с FluentValidation. Как mock ValidationResult
Я хочу проверить свой метод обслуживания, который использует FluentValidation.
Простой пример:
Validator:
RuleSet("Nulls",() =>
{
RuleFor(viewModel => viewModel).NotNull();
});
Моя служба (тестируемый):
if(Validate(viewModel, "Nulls"))
//....
private bool Validate(AddMerchantViewModel viewModel, string option)
{
var result = _merchantValidator.Validate(viewModel, ruleSet: options);
return result.IsValid;
}
И мой блок тест:
Я не знаю, как насмехаться с результатом merchantValidator.Validate
.
[Theory, AutoNSubstituteData]
public void Add_ViewModelAsNull_ShouldThrowArgumentNullException(
AbstractValidator<AddMerchantViewModel> merchValidator,
MerchantsService service)
{
// Arrange
//here I don't know how to mock result of Validate. It is always null.
merchantValidator.Validate(Arg.Any<AddMerchantViewModel>(), ruleSet: Arg.Any<string>()).Return(new ValidationResult());
// Act
Action action =() => service.Add(null);
// Assert
action.ShouldThrow<ArgumentNullException>();
}