【发布时间】:2009-06-28 07:12:16
【问题描述】:
我不确定我应该在这里做什么。我应该硬编码所有值还是应该将它们放在 CONST 变量中。我看到的所有内容似乎都对其中的值进行了硬编码,所以我不确定。
这就是我现在正在做的事情。
假设我在控制器中进行了验证测试,以检查用户是否尝试提交带有空白字段的表单。
现在我将有一个 if 语句检查空白或空变量。如果发生这种情况,我会将错误添加到 ModelState 中,并附上我写的错误消息。
所以在我的单元测试中,我想确保如果提交了一个空白表单变量,它会被捕获。
现在在我的单元测试中,我刚刚创建了一个 CONST 变量并复制并粘贴了验证消息。
所以在我的断言中,我将实际消息与存储在我的 CONST Varrible 中的消息进行比较。我通过调用模型状态来执行此操作,并调用我期望错误所在的字段。
喜欢:
result.ViewData.ModelState["username"].Errors[0];
所以如果消息在那里,那么它一定已经进入了我的代码,否则它就不会存在。
所以我想到也许我应该创建一个静态的新类并保存所有这些 CONST 变量。
这样控制器视图和单元测试都可以使用它们。这样,如果我要更改错误消息,那么我只需要更改一个地方。因为我没有测试错误消息是什么,所以我正在测试它是否被设置。
同样的事情说异常我有一些自定义消息,但我没有测试消息是否正确,如果期望被捕获则更多。
我测试它的方式是查看消息是否是我期望的消息,因为如果它不是消息或消息不存在,那么就出了问题。
我是单元测试的新手,所以我想确保我要做的事情不会搞砸我的单元测试。
对我来说这是有道理的,但我认为最好先检查一下。
谢谢
【问题讨论】:
标签: .net unit-testing