7

我已经安装了 rspec-rails gem。当我跑步时rails g model movie showtime_date:date showtime_time:time,我想,我应该得到

invoke  active_record
      create    db/migrate/20130604010556_create_movies.rb
      create    app/models/movie.rb
      invoke    rspec
      create    spec/models/movie_spec.rb

但是当我跑步时,rails g model movie showtime_date:date showtime_time:time 我得到

invoke  active_record
      create    db/migrate/xxxxxxxxxxx_create_movies.rb
      create    app/models/movie.rb
      invoke    test_unit
      create      test/models/movie_test.rb
      create      test/fixtures/movies.yml

我的 gem 包有问题吗?我正在使用 Rails4 测试版。这个版本有错误还是其他什么?

我的应用程序的 BDD 是这样的app/features/show_descripitons.feature

Feature: Showtime Descriptions
    As a movie goer
    I want to see accurate and concise showtimes
    So that I can find movies that fit my schedule

    @wip
    Scenario: Show minutes for times ending with 00
        Given a movie
        When I set the showtime to "2013-05-04" at "2:15pm"
        Then the showtime description should be "June 04, 2013(2pm)"

    Scenario: Hide minutes for times ending with 00
        Given a movie
        When I set the showtime to "2013-05-04" at "2:00pm"
        Then the showtime description should be "June 04, 2013(2pm)"

app/features/step_definition/showtime_descriptions.rb的就是这个

Given(/^a movie$/) do
    @movie = Movie.create!
end

When(/^I set the showtime to "(.*?)" at "(.*?)"$/) do |date, time|
    @movie.update_attribute(:showtime_date, Date.parse(date))
    @movie.update_attribute(:showtime_time, time)
end

Then(/^the showtime description should be "(.*?)"$/) do |showtime|
    @movie.showtime.showtime eq(showtime)
end
4

3 回答 3

10

我应该把我的这段代码放在 config/application.rb

    config.generators do |g|
       g.template_engine :erb
       g.test_framework  :rspec, :fixture => true, :views => false
       g.integration_tool :rspec, :fixture => true, :views => true
       g.fixture_replacement :factory_girl, :dir => "spec/support/factories" 
     end
于 2013-06-27T08:41:47.130 回答
4

好吧,我在 4.1 中也遇到了类似的问题。但最后,以下票帮助我解决了这个问题。https://github.com/rspec/rspec-rails/issues/439

简而言之,您必须确保它rspec-railsdevelopment组中,而不仅仅是在test组中。通过这个小改动bundle install,我得到了自动生成的所有规范文件。

于 2014-06-23T01:48:44.513 回答
0

听起来您在创建 rails 项目后添加了 RSpec。您将需要删除测试单元生成器参考。确保您已运行rails g rspec:install并且以下内容不在您的config/application.rb( http://edgeguides.rubyonrails.org/generators.html#customizing-your-workflow ) 中:

g.test_framework  :test_unit, fixture: true

创建新的 rails 项目时,您可以省略带有-T, [--skip-test-unit]标志的测试单元。

于 2013-06-04T18:12:07.607 回答