2015-11-22 90 views
0

上午,测试NancyFX模型验证

我测试在NancyFX模型验证(1.4.1)。点击API端点时验证工作正常,但在测试中失败。我正在使用默认引导程序。测试在一个单独的项目中。两个项目都引用了nancy.validation.fluentvalidation包。测试浏览器中是否需要更多配置?

在此先感谢!

型号:

public class CreateServiceCommand 
{ 
    [Required(AllowEmptyStrings = false)] 
    public string TestField { get; set; } 
} 

下测试模块:

public class ServiceModule : NancyModule 
{ 
    private readonly IServiceCreateRequestedListener _listener; 

    public ServiceModule(IServiceCreateRequestedListener listener) 
    { 
     _listener = listener; 
     Post["/services/create"] = parameters => 
     { 
      var request = this.Bind<CreateServiceCommand>(); 

      var result = this.Validate(request); 

      if(!result.IsValid) return HttpStatusCode.BadRequest; 

      _listener.CreateServiceRequested(request); 
      return ""; 
     }; 
    } 
} 

试验片段:

[SetUp] 
public void Setup() 
{ 
    var browser = new Browser(with => 
    { 
     with.Module<ServiceModule>(); 
     with.Dependency<IServiceCreateRequestedListener>(this); 
    }); 

    _result = browser.Post("/services/create", with => 
    { 
     with.HttpRequest(); 
    }); 
} 

[Test] 
public void ShouldReturnBadRequest 
{ 
    Assert.That(_result.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest)); 
} 

回答

0

在CreateServiceCommand数据注释如图演示代码没有工作。

我不得不FluentValidation

实施

AbstractValidator<CreateServiceCommand> 

实例