我是新來的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");
那麼結果是不爲空。第一個斷言通過。
但是我不能使用它,因爲我不確定如何檢查第二個聲明語句而不使用result.Content
。我真的不確定在我的情況下要測試的最佳做法是什麼。
感謝任何幫助。
我不明白'GetServiceId'部分;你寫過'GetCustId'是你試圖測試的方法......關於第一個斷言,你可以刪除它,第二個斷言如果結果爲空則會失敗......結果有什麼問題。 Content'? –