【发布时间】:2016-06-15 08:43:16
【问题描述】:
我将 TDD 方法与 xUnit 2、NSubstitute、AutoFixture、FluentAssertions 一起用于我的单元测试。
我想测试使用 FluentValidation 的服务方法。
简单示例:
验证器:
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>();
}
【问题讨论】:
标签: unit-testing xunit fluentvalidation autofixture nsubstitute