2

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);
}

アサートは次のメッセージで失敗します。

期待値: OK
だった: OK

なんてこと?両方の結果のタイプHttpStatusCodeと値は「OK」です。.GetValue()または両方に追加すると、アサートはパスしますが、さまざまなハックや「コードの匂い」.ToString()が感じられます。

最初は、nUnit とテスト列挙型の癖かもしれないと思っていましたが、次のようなことを試してみると:

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

それはうまくいきます。

4

1 に答える 1

4

Argggh....私はReShaftedされています..

ファイルの先頭にこれを見つけましたが、自分でそこに置いていないと確信しています。

using HttpStatusCode = System.Net.HttpStatusCode;

ここで学ぶべき教訓は、ツールにやみくもに頼って自分の考えを実行してはならないということです。

于 2013-09-30T12:04:45.417 に答える