2

我正在尝试使用参数测试模块(以下仅是我试图解决问题的代码)

public class StuffModule : NancyModule
{
    public StuffModule() : base("/Stuff")
    {
        Get["/All/"] = parameters =>
                       {
                           string str = parameters.one;
                           return Response.AsJson(str);
                       };
    }
}

private Browser _browser;

[SetUp]
public void SetUp()
{
    var module = new StuffModule(null);

    var mock = new Mock<IRecipeExtractor>();
    var bootstrapper = new ConfigurableBootstrapper(
            with => with.Dependency(mock.Object)
        );

    _browser = new Browser(bootstrapper);
}

[Test]
public void Can_extract_recipe_as_json()
{
    var result = _browser.Get("/Stuff/All/", with =>
    {
        with.HttpRequest();
        with.Query("one", "yes_one");
    });

    Assert.That(result.StatusCode, Is.EqualTo(HttpStatusCode.OK));
}

运行上面的代码时,我的参数变量中什么也没有。一些提示?

4

1 回答 1

0

为了捕获参数,您需要将它们声明为您的部分的一部分,例如/profile/{username}这将导致parameters.username可访问。

您正在将一个查询字符串值传递到您的测试中,该值可以访问Request.Query.one并且您可以确保它具有一个值Request.Query.one.HasValue

你可以在这里阅读更多关于它的信息https://github.com/NancyFx/Nancy/wiki/Defining-routes和这里https://github.com/NancyFx/Nancy/wiki/Testing-your-application

于 2012-10-21T11:13:32.413 回答