我正在尝试为 Nancy 项目编写测试。我已经将测试简化为最基本的内容,但仍然得到了看似奇怪的结果。
模块:
public class HomeModule : BaseModule
{
public HomeModule(IUserMapper mapper)
{
Get["/"] = "Hello, world!";
}
}
测试:
[Test]
public void Home_Index_should_return_response_OK()
{
var result = GetBrowser().Get("/", with => with.HttpRequest());
Assert.AreEqual(HttpStatusCode.OK, result.StatusCode);
}
断言失败并显示以下消息:
Expected: OK
But was: OK
WTF? 两个结果的类型均为 HttpStatusCode
且值为“OK”。如果我将 .GetValue()
或 .ToString()
添加到它们两者中,断言会通过,但感觉会有所不同 hack-y 以及一些东西“代码气味”。
起初我认为这可能是 nUnit 和测试枚举的一个怪癖,但是当我尝试这样的事情时:
var value = ActionTargets.Suite;
Assert.AreEqual(ActionTargets.Suite,value);
一切顺利。
最佳答案
Argggh....我已经被改造了..
我刚刚在文件顶部发现了这个,我确信我自己没有把它放在那里。
using HttpStatusCode = System.Net.HttpStatusCode;
这里要吸取的教训:不要盲目依赖工具来替你思考。
关于unit-testing - 测试 HttpStatusCode 时,使用 nUnit 测试 Nancy 模块断言失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19093520/