c# - Nancy 测试在其他程序集中找不到路由

标签 c# testing nancy

我有以下规范(使用 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”,并且主体抛出异常,表明流已关闭/处置。我的规范解决方案引用了包含 LoginModule 的程序集。我还应该怎么做才能让规范找到模块中的路由?

最佳答案

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

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

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

关于c# - Nancy 测试在其他程序集中找不到路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8139096/

相关文章:

c# - 如何在 C# 中获取由解析器动态生成的 .json 文件的键和值

c# - 远程 WMI 复制文件夹

ruby-on-rails - 在不暴露 API 密码的情况下在 Travis CI 中使用 API 身份验证运行测试

c# - 如何将 NancyFX 从 1.2 版更新到 1.4.4 版

Owin 托管的 NancyFX 应用程序在发布到 IIS 后返回无法加载类型 Nancy.Hosting.Aspnet.NancyHttpRequestHandler

c# - 从数据库中检索与列表的多个值匹配的记录

c# - hangfire 作业激活和 Autofac 的问题

python - 是否可以从 nose 插件访问类级属性?

javascript - Sinon stub 未替换测试中的功能

asp.net - ASP.NET Web 表单的 Nancy 路由