是否可以在ServiceStack中对ValidationFeature插件进行单元测试

时间:2016-04-03 17:20:41

标签: c# unit-testing servicestack

我想在我的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()行,但这也不起作用。我试图做的是什么?

2 个答案:

答案 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

请关闭。