Rails教程(M. Hartl)第3章,`rails generate`之后缺少`static_pages_controller_test.rb`文件夹?

时间:2016-02-07 20:21:50

标签: ruby-on-rails ruby ruby-on-rails-3 railstutorial.org

我正在研究Michael Hartl的RoR教程第3.2.1节,并且我使用以下命令生成静态页面控制器:

$ rails generate controller StaticPages home help

但是在这样做之后我看不到像书中那样生成test/controllers/static_pages_controller_test.rb文件(见第十行):

$ rails generate controller StaticPages home help
      create  app/controllers/static_pages_controller.rb
       route  get 'static_pages/help'
       route  get 'static_pages/home'
      invoke  erb
      create    app/views/static_pages
      create    app/views/static_pages/home.html.erb
      create    app/views/static_pages/help.html.erb
      invoke  test_unit
      create    test/controllers/static_pages_controller_test.rb
      invoke  helper
      create    app/helpers/static_pages_helper.rb
      invoke    test_unit
      create      test/helpers/static_pages_helper_test.rb
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/static_pages.js.coffee
      invoke    scss
      create      app/assets/stylesheets/static_pages.css.scss

这是我运行时的样子:

screenshot

我的文件夹也是完全空的,无法运行任何测试。

2 个答案:

答案 0 :(得分:1)

我认为你可能混淆了Michael Hartl的Ruby On Rails教程的版本。

第3版使用Minitest而不是RSpec。但是,您的应用程序似乎设置为使用RSpec,这是第二版中使用的不同测试框架。

如果你想知道为什么它生成RSpec规格而不是测试那么最有可能因为你跑了:

rails generate rspec:install

更改生成器以生成规范。

解决此问题的最简单方法是删除当前的sample_app目录并从第3章开头重新开始,并确保只使用当前版本:

https://www.railstutorial.org/book/static_pages

还有其他方法,但如果你有一个新的开始,可能更容易避免其他不幸事件。

答案 1 :(得分:0)

因为您使用rspec进行测试,而生成器命令会创建与rspec suite相关的文件和文件夹。而不是创建:

  

测试/控制器/ static_pages_controller_test.rb

它创建:

  

规格/控制器/ static_pages_controller_spec.rb

所以,如果您想关注Michael Hartl的RoR教程,您必须将测试方法更改为最小的。