你测试控制器多少钱?

时间:2009-09-12 09:13:54

标签: ruby-on-rails rspec bdd

我目前正在开始使用BDD - 我以前没有写过任何测试。 我总是试图让我的模特变胖,而我的控制器很瘦。

您如何看待 - 控制器规格是否必要?

祝你好运

3 个答案:

答案 0 :(得分:2)

是。测试正在进行的正确调用,并在必要时进行正确的重定向和制作,并测试正在呈现的页面是否正确。因此请测试您的应用程序是否按预期运行。

答案 1 :(得分:0)

对于我自己,我试图理解在测试中寻求高水平代码覆盖率与维护一组可能非常脆弱的测试的长期成本之间的平衡。

假设我们有一个控制器

    try {
        result = mode.doSomething();

        if  (result.count == 0 )
             message = "none found"
             redisplay criterion page
        else if (result.count == 1 ) 
             display detail page
        else 
             display list page
    } catch exception {
        message = "bad things happened, please try again"
        redisplay criterion page
    }

一个初步的想法是,对三个案例(0,1,许多)的测试可能没那么有价值,并且比例外情况的测试更容易改变。因为a)不太有价值。其他测试将在页面显示中捕获问题b)。测试非常接近于简单地再现代码。

    code: go to page X
    test: did you go to page X?

如果开发人员做出错误的X选择,他也会错误地测试!如果UI的可用性测试显示Y是更好的页面显示,那么我们将串联更新代码和测试。测试真的实现了吗?

虽然异常情况在正常的UI测试中可能很难实现,并且很容易使用模拟进行测试。而且,异常后的行为是我们确实需要做的事情。

答案 2 :(得分:0)

  

您如何看待 - 控制器规格是否必要?

如果将它们与良好的集成测试结合起来,我认为它们不是必需的。我发现应用程序的可用性非常重要,因此对于控制器/视图的每次更改,我都会点击应用程序并了解它的感受。在我看来,为控制器和视图创建“哑”测试没有太多额外的价值。

对于集成测试我正在使用Cucumber。这使得可以测试完整堆栈并确保您的应用程序以您希望的方式执行。对于业务逻辑(胖模型),我仍然使用RSpec。