我有以下规范(使用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();
}
Run Code Online (Sandbox Code Playgroud)
规范中的路由应该找到以下模块:
public class LoginModule : NancyModule
{
public LoginModule()
{
Get["/Login"] = parameters => "test";
}
}
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,响应的状态为"NotFound",并且Body会抛出异常,表示流已关闭/处置.我的规范解决方案引用了包含LoginModule的程序集.我还应该做些什么来使规范找到模块中的路径?
这是因为你没有对其他程序集的任何"硬引用"(即你没有直接使用其中的任何类型),因为.Net没有加载它,Nancy也找不到它.
我们有一个AppDomainAssemblyTypeScanner可以用来加载你的程序集(你可以使用一些方法来加载一组通配符的DLL),或者你可以通过在主程序集中添加一个类型的变量来避免它.你的测试组件.
我认为将来我们必须更改测试运行器以加载默认情况下可以找到的每个DLL,如果它导致问题,可以选择更改它.
| 归档时间: |
|
| 查看次数: |
1745 次 |
| 最近记录: |