私はASP.NETで単体テストを行っていますので、これについて私の知らないことを許してください。私はコントローラをテストしようとしています。ユニットテストWeb APIコントローラ:結果を取得する際のエラー
これは私がテストだ私のコントローラ内の関数である:
public IHttpActionResult GetCustId(string name)
{
var c_id = db.Customer.Where(s => (s.c_Name == name));
if (c_id == null)
{
return null;
}
return Ok(c_id);
}
そして、これは私のユニットテストコードです:
public void GetName_ShouldReturnCorrectId()
{
var context = new TestSContext();
context.Customers.Add(new Customer { c_ID = 1, c_Name = "jonny"});
var controller = new CustomerController(context);
var result = controller.GetCustId("Johnny") as OkNegotiatedContentResult<Customer>; //ISSUE: Result is always NULL
Assert.IsNotNull(result);
Assert.AreEqual(1, result.Content.c_ID);
}
問題はここにある:
var result = controller.GetServiceId("Johnny") as OkNegotiatedContentResult<Customer>
は常にNULLを返すためです。
var result = controller.GetCustId("Johnny");
その後、結果はnullではない:私はちょうどこれを使用する場合は
しかし...。そして、最初の断言はパスする。
しかし、result.Content
を使用せずに2番目のアサートステートメントをチェックする方法がわからないため、使用できません。私は実際に私の場合にベストプラクティスがテストされているかどうかはわかりません。
ありがとうございました。あなたが原因あなたの文
if (c_id == null)
{
return null;
}
私は 'GetServiceId'についてのセクションを理解していません。あなたは 'GetCustId'がテストしようとしているメソッドであると書いています。最初のアサーションについてはそれを取り除くことができ、結果がnullの場合には2番目のアサーションで失敗します。コンテンツ '? –