[英]Testing A function
我需要為一個函數編寫一個單元測試。 我對測試一無所知,而且我看到的示例更多是面向數學的,因此我無法理解如何為此功能編寫測試。 任何人都可以幫我為此功能編寫單元測試:
public static void CreateUser(
int userId,
string name,
System.DateTime createdAt,
string createdBy,
System.DateTime modifiedAt,
string modifiedBy,
string address,
string city,
string province,
string country,
string postcode,
string phone)
{
try
{
using (UserDbContext _usermain = new UserDbContext())
{
User newuser = new User()
{
UserId = userId,
Name = name,
CreatedAt = createdAt,
CreatedBy = createdBy,
ModifiedBy = modifiedBy,
ModifiedAt = modifiedAt,
Address = address,
City = city
};
_usermain.Users.Add(newuser);
_usermain.SaveChanges();
}
}
catch (Exception ex)
{
string error = string.Format("Error in Creating User", ex.Message);
throw new Exception(error, ex);
}
}
應該編寫單元測試來驗證函數的行為。 在您的情況下,您的函數正在接收輸入並更新數據庫。 編寫單元測試將很困難,因為數據庫很難模擬。 您基本上需要找出一種方法來模擬UserDbContext
,將輸入傳遞給函數,並驗證數據庫是否已正確更新。
我建議單元測試不適用於此功能。 它的唯一目的是改變一個你不能輕易模仿的外部環境。 一些變化,將使其更容易測試有:
User
,一個獲取User
並將其插入數據庫。 (在那種情況下,我會對第一種方法進行單元測試,但不會對第二種方法進行單元測試)。 如果你已經有了一個單元測試,為User
構造則不需要分離和單元測試。作為旁注,捕獲任何異常並拋出新的通用異常不會增加價值。 事實上,由於您丟失或隱藏了以下信息,它會消除價值:
當你拋出一個新的InnerException
時,所有這些都被隱藏在InnerException
。 如果您不打算對它做任何事情,只需取出 try/catch 塊並讓原始異常冒泡。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.