模拟图像上传视图模型

时间:2013-03-26 21:41:50

标签: asp.net-mvc tdd moq testdriven.net

我知道一些ASP MVC,试图接受TDD。以下示例安装了xUnit和TestDriven(包括Moq)。

问题是我正在尝试模拟图像上传视图模型,因此我可以断言它正在上传。

Moq给了我一个问题:

  

非虚拟(在VB中可覆盖)成员的无效设置

尝试

var imageMock = new Mock<ImageViewModel>();
imageMock.Setup(x => x.IsUrl).Returns(true);`

我不知道如何继续前进 - 为视图模型创建接口是无意义的,我是为网站编程,而不是为了测试环境。

我应该更换Mock环境还是定义界面或......?

请提供一些经验丰富,内容丰富的建议,请提供或至少提供良好的样本,以便建议我做什么。

谢谢!

1 个答案:

答案 0 :(得分:1)

首先,这是一个汽车财产吗?

public bool IsUrl {get; set;}

如果是这样,只需在测试设置中自行设置值。如果它不是自动属性,将它移动到方法而不是属性更有意义。那时,您可以将方法设为虚拟(这是错误消息实际上说的内容。)

在模拟时,你不能模拟那些不是接口或不是虚拟的东西(我相信有一些付费的模拟库可以让你,但是FakeItEasy,Moq和其他人要求它是虚拟的。)

要做到这一点,您只需要使属性看起来像这样:

public virtual bool IsUrl {get; set;}

其次,您在视图模型上测试的是什么?测试getter和setter在很大程度上是浪费时间,因为它们很可能会在代码的其他地方进行测试。此外,对getter和setter的测试正在测试编译器,而不是代码。如果getter和setter在.NET中不起作用,那么你会遇到很多问题。最好测试视图模型的创建,然后确保它在创建后具有正确的值。