我想在C#中为我的add方法编写单元测试。我的方法有一个dog实体,类型为参数。此方法通过我的服务将其添加到数据库。
public async Task<ActionResult> Add(Dog dog, string type)
{
if (ModelState.IsValid)
{
var d = new Dog();
d.Name = dog.Name;
d.NumOfLegs = dog.NumOfLegs;
d.BirthdayDate = dog.BirthdayDate;
if(type == "mom"){
//when the dog is a mom, dog.Childrens got default puppies
InitChildrenOfMomDog(dog);
}
dogService.Insert(dog);
return RedirectToAction("Home");
}
return View(dog);
}
我想检查单元测试,我的方法正常工作,默认小狗可以添加到狗,或者如果用户添加有效(或没有)属性...我在这一点上有点困惑。
答案 0 :(得分:3)
您应该将Controller的代码重构为单独的视图模型类。这允许直接测试视图模型而无需与MVC框架交互。请参阅MVVM模式。
<强>控制器强> 创建,构建和返回视图模型类。只有特定于视图的逻辑应该在这里(如果有的话),因为它不能直接测试。
<强>视图模型强> 执行视图的所有逻辑操作,例如数据库查询。可以直接测试。
<强>控制器强>
UITableView
查看模型类
public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath)
...
}
<强>测试强>
public async Task<ActionResult> Add(Dog dog, string type)
{
if (!ModelState.IsValid)
return View(dog);
var vm = new AddDogVM(dogService);
vm.Add(dog, type);
return RedirectToAction("Home");
}