【问题标题】:Testing Nancy module with nUnit fails assert when testing HttpStatusCode测试 HttpStatusCode 时使用 nUnit 测试 Nancy 模块失败断言
【发布时间】:2013-10-10 17:20:57
【问题描述】:

我正在尝试为 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);
}

断言失败并显示以下消息:

预期:好的
但是是:好的

WTF? 两个结果的类型均为HttpStatusCode,值为“OK”。如果我将.GetValue().ToString() 都添加到它们,断言会通过,但感觉会有所不同hack-y 和一些“代码气味”。

起初我认为这可能是 nUnit 和测试枚举的一个怪癖,但当我尝试这样的事情时:

var value = ActionTargets.Suite;
Assert.AreEqual(ActionTargets.Suite,value);

一切顺利。

【问题讨论】:

    标签: unit-testing enums nunit nancy


    【解决方案1】:

    Argggh....我已经被改头换面了..

    我刚刚在文件顶部发现了这个,我确定不是我自己放在那里的。

    using HttpStatusCode = System.Net.HttpStatusCode;
    

    这里要吸取的教训:不要盲目地依赖工具来为你思考。

    【讨论】:

    • 感谢您的警示故事。您可以取消选中 ReSharper 选项下的“允许别名使用指令”以防止这种情况发生。
    猜你喜欢
    • 1970-01-01
    • 2021-10-25
    • 2017-04-10
    • 2020-10-08
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 2021-10-11
    相关资源
    最近更新 更多