2011-11-01 8 views
10

ASP.NET MVC3 JsonViewから返されたDataの値をテストしようとしていますが、わかりません。私はJsonの結果をASP.NET MVC3のWebサイトで単体テストできますか?


私は、JsonViewを返すアクションメソッドを備えた単純なASP.NET MVC3ウェブサイトを持っています。

例えば(匿名型のリストについては、いくつかpseduoコード):私のユニットテストで今すぐ

var lotsOfFail = database.GetMeThatDamnDataList(); 
var returnData = (from x in lotsOfFail 
        select new 
        { 
         Id = x.Id, 
         Name = x.Name 
         .. 
        }).ToList(); 
return Json(returnData, JsonRequestBehavior.AllowGet); 

、私はDataの値をテストしようとしています。

// Act. 
JsonResult jsonResult = controller.PewPewKThxBai(null, null); 

// Assert.  
Assert.IsNotNull(jsonResult); 
dynamic data = jsonResult.Data; 
Assert.IsNotNull(data); 
Assert.IsTrue(data.Count >= 0); 

しかし、私はまた、データの固定リストに照らして、戻ってきて最初の3つの結果をテストしたい - : だから、次のような種々の提案が、私は...以下のどの-does-仕事をやっています。私は、次のコードを持っているか

お知らせ:var lotsOfFail = database.GetMeThatDamnDataList(); まあは、データベースは、いくつかのハードコーディングされたデータといくつかのランダムなデータが取り込まれます。最初の3つのレコードはハードコードされています。

このように、ハードコードされたデータをテストできることを確認したいと思います。

このよう

...

// Assert.  
Assert.IsNotNull(jsonResult); 
dynamic data = jsonResult.Data; 
Assert.IsNotNull(data); 

var hardCodedData = 
    FakeWhatevers.CreateHardcodedWhatevers() 
    .Where(x => x.EventType == EventType.BannableViolation) 
    .ToList(); 
Assert.IsTrue(data.Count >= hardCodedData .Count); 

for (int i = 0; i < hardCodedData .Count; i++) 
{ 
    Assert.AreEqual(data[0].Id== hardCodedData [0].GameServerId); 
} 

しかしdataは動的であるので、私はそれの特性を試験する方法がわかりません。

アイデア?

答えて

9

は動作するはずです以下:私は最初の引数としての順序を反転している

for (int i = 0; i < hardCodedData.Count; i++) 
{ 
    Assert.AreEqual(hardCodedData[i].GameServerId, data[i].Id); 
    Assert.AreEqual(hardCodedData[i].GameServerName, data[i].Name); 
    ... 
} 

通知は予想であり、第二は、実際のです。

+0

これは動的なのが第二のものか何かの必要性のためですか?なぜ*方程式の*順序*は物事に影響を与えますか? –

+0

ああブリーフ:私は今、私のエラーを参照してください。私は '=='しかし2つの引数をしてはいけません。乾杯。 –

+2

@ Pure.Krome、注文は何も影響しません。それはただの大会です。あなたの単体テストが失敗したとき、あなたは意味のあるメッセージを得るでしょう: 'expected:1、actual:2'。テストが失敗したときに引数を間違った順序で入れた場合、私のhardCodedDataに2が含まれていると、なぜ地球上で1になるのだろうかと疑問に思うでしょう。 –

関連する問題