【问题标题】:Nancy test doesn't find route in other assembly南希测试在其他组件中找不到路线
【发布时间】:2011-12-29 15:49:57
【问题描述】:

我有以下规格(使用 Machine.Specifications 或 mSpec):

public class when_a_user_logs_in_successfully
{
    static Browser _browser;
    static BrowserResponse _response;

    Establish context = () =>
        {
            var bootstrapper = new ConfigurableBootstrapper();

            _browser = new Browser(bootstrapper);
        };

    Because of = () => _response = _browser.Get("/Login", with => with.HttpRequest());    

    It should_return_a_successful_response = () => _response.Body.ShouldNotBeNull();
}

规范中的路由应该找到以下模块:

public class LoginModule : NancyModule
{
    public LoginModule()
    {
        Get["/Login"] = parameters => "test";
    }
}

但由于某种原因,响应的状态为“NotFound”,而 Body 则抛出异常,表明流已关闭/已处理。我的规范解决方案引用了包含 LoginModule 的程序集。我还应该怎么做才能让规范在模块中找到路由?

【问题讨论】:

    标签: c# testing nancy


    【解决方案1】:

    这是因为您没有对其他程序集的任何“硬引用”(即您没有直接使用其中的任何类型),因为 .Net 不会加载它,而 Nancy 不会找到它。

    我们有一个 AppDomainAssemblyTypeScanner,您可以使用它来加载程序集(其中有一些方法可以用来加载通配符集 DLL),或者您可以通过在您的将主程序集放入您的测试程序集。

    我认为将来我们必须更改测试运行程序以加载默认情况下可以找到的每个 DLL,如果它导致问题,可以选择更改它。

    【讨论】:

    • 我遇到了完全相同的问题,Nancy 正在执行所有之前/之后的挂钩,但在任何路线上都返回 404。使用 AppDomainAssemblyTypeScanner 没有任何区别。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 2012-09-14
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多