【发布时间】:2016-06-15 13:55:23
【问题描述】:
public ActionResult SomeAction(int?id)
{
MyModel model = new MyModel();
return View(model);
}
[Test]
public void Can_Open_SomeAction()
{
// controller is already set inside `SetUp` unit step.
ViewResult res = this.controller.SomeAction() as ViewResult;
var model = result.Model as MyModel;
Assert.IsNotNull(model);
}
此测试成功通过。但是当更改控制器操作以填充组合时,例如
public ActionResult SomeAction(int?id)
{
MyModel model = new MyModel();
this.PopulatePageCombos(id);
return View(model);
}
我在 this.PopulatePageCombos(id); 线上遇到错误
Object reference is not set
那么,如何在单元测试中模拟这个 PopulatePageCombos 方法?
更新:
public ActionResult SomeAction(int?id)
{
MyModel model = new MyModel();
this.PopulatePageCombos(model.Id, 100);
return View(model);
}
更新 2:
PopulatePageCombos (model, countryId, requesterId);
其中model 的类型为MyModel,countryId 的类型为int,requesterId 的类型为int
【问题讨论】:
-
this.PopulatePageCombos(id)做什么/使用什么?它依赖于测试期间不存在的东西。确定那是什么,然后您可以决定如何测试您的被测方法 (MUT) -
@Nkosi,实际上它使用了两个参数,我刚刚更新了我的问题。是否可以在 nunit SetUp 方法中模拟这个以避免使用任何外部帮助器?
-
你误解了我的评论。查看
PopulatePageCombos方法的主体。方法定义是什么样的。此外,您更新后的帖子不再使用 id 参数,因此现在传递给它的内容都无关紧要,结果应该是相同的。
标签: c# .net asp.net-mvc razor nunit