【问题标题】:How do I generate specs for existing controllers?如何为现有控制器生成规范?
【发布时间】:2010-11-21 00:22:04
【问题描述】:

我已经设置了几个控制器。现在我想开始为他们编写规范测试。是否有自动生成规范文件的命令?我知道 rails 对新资源执行此操作,但我不知道它是否也对现有控制器/模型执行此操作。

【问题讨论】:

    标签: ruby-on-rails-3 rspec


    【解决方案1】:
    rails g rspec:controller ControllerName
    

    当它要求您覆盖现有控制器时,输入n

    【讨论】:

    • 这只会为控制器生成规范文件。如果您想要关联的文件,例如帮助程序或工厂,那么您想要:rails g controller ControllerName -s 最后的 -s 将导致它跳过任何现有文件,因此您不必担心有关覆盖任何内容的问题。
    • 这也适用于模型? rspec:model?这存在于 rspec 1 上?
    • rspec 中命名空间的东西通常会尝试创建控制器吗?或者你在想rails g controller ControllerName 做什么?
    • 这是 5 年前的答案,当时可能是正确的。
    【解决方案2】:

    有两种选择。如果你想要一个空的规范文件,你可以尝试:

    rails g rspec:controller ControllerName
    

    现在,如果您想要一个包含基本 REST 控制器初始规范的规范文件,请尝试:

    rails g rspec:scaffold ControllerName
    

    【讨论】:

      【解决方案3】:

      如果你在 application.rb 中配置了 rspec:

      config.generators do |g|
        g.test_framework      :rspec
      end
      

      然后rails g controller things 将起作用。选择不覆盖生成的文件。

      所有规范在生成时的样子如下:

      require 'spec_helper'
      
      describe ThingsController do
      
        it "should be successful" do
          get :index
          response.should be_successful
        end
      
      end
      

      我经常手动创建规范,因为它相当简单。

      【讨论】:

      • 我注意到有时生成的测试可能比这更详细。尤其是在生成资源时,测试将包含所有 REST 方法的代码。
      • 您在问题标题中特别提到了“现有控制器”,所以我没有注意到您在文本中包含模型。无论哪种方式,重新运行生成器并在他们要求覆盖模型或控制器文件时说 n 将非常适合您的目的。 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-01
      • 2012-04-20
      • 2019-09-20
      • 1970-01-01
      相关资源
      最近更新 更多