一天前刚开始学习和编写单元测试,所以这可能是一个太简单的问题:
我在我的DBTaskHanlder班级中有这个方法,我想为它做一些单元,当 ModelState 无效时,我可以写一个,但现在为下一个:
public bool CreateTask(ForgotPasswordViewModel fpModel)
{
if (!ModelState.IsValid)
{
return false;
}
try
{
CreateTaskFromModel(fpModel);
_dbContext.SaveChanges();
return true;
}
catch (Exception e)
{
var issue = e.ToString();
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
这CreateTaskFromModel是一种private方法,它的工作是在数据库中的表上创建一个新行。所以我想测试何时调用此方法是在数据库中创建一个新行?它实际上是正确的测试吗?如何测试?我不认为我们应该点击并插入到真正的数据库中,对吗?
private void CreateTaskFromModel(ForgotPasswordViewModel fpModel)
{
var message = _dbContext.Create<Message>();
message.MessageType = "TASK".PadLeft(10);
message.Assigned_User_K = fpModel.SendPasswordRequestTo.Trim();
message.Assigned_Date = DateTime.Today;
message.Source_User_K = string.Empty;
message.Target_File_K = "WEBCFGPHRM";
message.Owner_User_K = string.Empty;
message.Message_K = _keyGenerator.Get10ByteBase36Key();
_dbContext.Messages.Add(message);
}
Run Code Online (Sandbox Code Playgroud)
我不认为我们应该点击并插入到真正的数据库中,对吗?
是的你应该。它不是“单元测试”,但它是一个有价值的测试。随着您在编程方面变得越来越好,您会发现您的大多数错误都位于程序的边缘,在那里它会触及其他事物,例如数据库。
我喜欢编写 CRUD 测试。一种实际执行一系列测试的“测试方法”。通常采用这种模式:
即使一切都在一个大方法中,但将每个步骤视为自己的测试,恰好使用前一个测试作为设置。
| 归档时间: |
|
| 查看次数: |
2669 次 |
| 最近记录: |