1
以下に説明するポストビヘイビアのためにバリデータをテストしたいと思います。ServiceStackで "ApplyTo.Post"ルールセットをテストする方法
public interface ITestValidator
{
bool IsExists(string testName);
}
public class TestValidator : ITestValidator
{
public bool IsExists(string testName)
{
return true;
}
}
public class TestRequest
{
public string Name { get; set; }
public int? Level { get; set; }
}
public class TestRequestValidator : AbstractValidator<TestRequest>
{
public ITestValidator Validator { get; set; }
public TestRequestValidator()
{
RuleFor(p => p.Level).Must(p => p.HasValue && p > 0);
RuleSet(ApplyTo.Post,() =>
{
RuleFor(p => p.Name).Must(p => !Validator.IsExists(p));
});
}
}
次のようにxunitでテストを作成しました。
[Fact]
public void test_should_not_be_valid()
{
var validator = new TestRequestValidator();
var validationResult = validator.Validate(new TestRequest
{
Level = 1,
Name = null
});
Assert.False(validationResult.IsValid);
}
このテストでは、
RuleFor(p => p.Level).Must(p => p.HasValue && p > 0);
ためsuccessedされる。しかし、それは
RuleFor(p => p.Name).Must(p => !Validator.IsExists(p));
がどのように私はApplyTo.Post、ApplyTo.Get」などの複数の操作のためのバリデータをテストすることができますのために働いていません、 ApplyTo.Delete "?あなたのような何かをHTTPメソッドのバリデータをテストすることができるはず
i「はservice.Any(新TestRequest {})」でこれを使用することができますどのように? –
@MustafaGülmezバリデータは、[サービスの作成前に実行される](http://docs.servicestack.net/order-of-operations)リクエストフィルタ内で実行されるため、[自己ホスト統合テストを作成する] (http://docs.servicestack.net/testing)を使用してフル・リクエスト・パイプラインを実行します。 – mythz