2010-11-21 52 views
27

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

回答

42
rails g rspec:controller ControllerName 

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

+6

这只生成控制器的spec文件。如果你想要关联的文件,比如助手或工厂,那么你需要:'rails g controller ControllerName -s' -s在最后会导致它跳过任何现有的文件,所以你不必担心这个问题关于压倒一切。 – Blimey85 2013-05-14 17:51:44

+0

这适用于模型吗? 'RSpec的:model'?这存在于rspec 1? – 2014-08-04 02:58:52

+0

'rspec'内的命名空间通常会尝试创建控制器吗?或者你在想什么“控制器ControllerName”? – 2016-03-02 03:03:55

4

如果你已经在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 

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

+6

我注意到有时生成的测试可能比这更详细。特别是当您生成资源时,测试将包含所有REST方法的代码。 – picardo 2010-11-21 17:50:34

+0

您在问题标题中专门说了“现有控制器”,所以我没有注意到您在文本中包含了模型。无论哪种方式,当他们要求覆盖模型或控制器文件将很好地适合您的目的时,重新运行生成器并说“n”。 :) – 2010-11-22 20:47:25

8

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

rails g rspec:controller ControllerName 

现在,如果你想用一个基本的REST控制器初始规格SPEC文件,尝试用:

rails g rspec:scaffold ControllerName