我想在我的ServiceStack项目中对我的ValidationFeature
规则集进行单元测试,但是在创建appHost
对象时没有初始化插件。
以下是我初始化appHost
。
[TestFixtureSetUp]
private void TestFixtureSetUp()
{
appHost = new BasicAppHost().Init();
appHost.Plugins.Add(new ValidationFeature());
var container = appHost.Container;
container.RegisterValidators(typeof(ApplicationValidator).Assembly);
container.RegisterAutoWiredAs<FakeRetailReferralRepository, IRetailReferralRepository>();
container.RegisterAutoWired<SubmitApplicationService>();
}
我已经尝试在Plugins.Add
构造函数和BasicAppHost
之间移动Init()
行,但这也不起作用。我试图做的是什么?
答案 0 :(得分:2)
验证功能在请求管道中得到验证,因此通常需要完整的集成测试来测试它,即使用自托管和服务客户端。
您仍然可以对验证器进行单元测试,但是在调用服务之前进行验证时,您需要直接使用Request DTO测试验证器,而不是调用服务,例如:
using (var appHost = new BasicAppHost
{
ConfigureAppHost = host => {
host.Plugins.Add(new ValidationFeature());
},
ConfigureContainer = c => {
c.RegisterValidators(typeof(ApplicationValidator).Assembly);
}
}.Init())
{
var myValidator = appHost.TryResolve<IValidator<MyRequest>>();
var result = myValidator.Validate(new MyRequest { ... });
Assert.That(result.IsValid, Is.False);
Assert.That(result.Errors.Count, Is.EqualTo(1));
}
答案 1 :(得分:0)
除非这已经改变,否则我认为我找到了答案。 Testing plugins in ServiceStack
请关闭。