【发布时间】:2014-06-06 18:10:17
【问题描述】:
以下是我的操作代码:-
public ActionResult Edit(int id)
{
ProductViewModel viewmodel = GetProduct(id);
if (viewmodel != null)
{
....................
}
}
在上面的代码中,if 条件基于 viewmodel。它从 GetProduct() 方法返回。其中 GetProduct() 方法是控制器的私有方法。
我想用 MOQ 在我的单元测试方法中模拟 ProductViewModel。谁能建议我最好的方法是什么?
【问题讨论】:
-
视图模型通常只是一个数据容器。因此,您应该模拟
GetProduct()方法并让它只返回一些静态数据(或 null,因为您需要对其进行测试) -
ViewModels通常是为视图而设计的数据结构......模拟它的价值是什么? -
@Tommy,GetProduct() 是控制器的私有方法,我不是在模拟私有方法。为了测试视图模型条件中的内容,我想模拟视图模型。
-
我会提出您的应用程序结构错误的论点。
GetProduct是一种业务逻辑方法,不应该是私有的,应该在业务逻辑层/类中。这就是为什么你在努力完成你想要做的测试。按照您现在的结构方式,没有将任何值注入该控制器的入口点。为此,您需要研究依赖注入/控制反转类型的编程方法。 -
@Tommy,也许你是对的,但它是我的应用程序的旧结构,目前我无法修改它。但是有什么方法可以模拟视图模型并测试我的进一步行动?
标签: c# unit-testing asp.net-mvc-4 moq viewmodel