【问题标题】:Rspec can't execute simple spec in existing RailsAppRspec 无法在现有 RailsApp 中执行简单规范
【发布时间】:2015-11-20 09:32:08
【问题描述】:

我在 rails v4.0.9 中有现有的 RailsApp

我的团队使用一些 gem 开发并在文件夹 initializers 中配置多个文件

我需要使用 Rspec 构建测试框架,这是我的 Gemfile:

group :development, :test do
  gem "rspec-rails", "~> 3.1.0"
  gem "factory_girl_rails", "~> 4.4.1" , :require => false
end

group :test do
  gem "faker", "~> 1.4.3"
  gem "capybara", "~> 2.4.3"
  gem "database_cleaner", "~> 1.3.0"
  gem "launchy", "~> 2.4.2"
  gem "selenium-webdriver", "~> 2.43.0"
end

我刚刚尝试构建模型规范,模型名称是 cart,首先我输入了非常简单的规范,只是为了确保 Rspec 正常运行:

require 'rails_helper'

describe Cart do
    it "has a valid factory for Cart"
end

spec/factories/cart.rb

FactoryGirl.define do
    factory :cart do
        user_id { Faker::Number.number(3) }
    end
end

当我输入控制台 rspec spec/models/cart_spec.rb 时:

config/initializers/cassandra.rb:25:in `initialize': undefined method `[]' for nil:NilClass (NoMethodError)
    from config/initializers/cassandra.rb:59:in `new'
    from config/initializers/cassandra.rb:59:in `block in <top (required)>'
    from lib/cassandra_utils/connector.rb:13:in `configure'
    from config/initializers/cassandra.rb:58:in `<top (required)>'
    from .rvm/gems/ruby-2.1.5/gems/activesupport-4.0.9/lib/active_support/dependencies.rb:223:in `load'
    from .rvm/gems/ruby-2.1.5/gems/activesupport-4.0.9/lib/active_support/dependencies.rb:223:in `block in load'
    from .rvm/gems/ruby-2.1.5/gems/activesupport-4.0.9/lib/active_support/dependencies.rb:214:in `load_dependency'
    from .rvm/gems/ruby-2.1.5/gems/activesupport-4.0.9/lib/active_support/dependencies.rb:223:in `load'

我该如何解决这个问题?

谢谢

【问题讨论】:

  • 查看config/initializers/cassandra.rb:25,看看为什么你调用 [] 的东西是 nil....
  • 这是 cassandra 的联系点:@hosts = (ENV['IC_CONTACT_POINTS'] || cassandra_config['IC_CONTACT_POINTS']).to_s.split(',')

标签: ruby-on-rails ruby rspec


【解决方案1】:
ENV['IC_CONTACT_POINTS']

返回 falsey 值,因此 cassandra_config['IC_CONTACT_POINTS'] 被评估。

cassandra_confignil。修改它,你会没事的。

【讨论】:

  • 我应该在哪里输入这个文件?
  • 你设置环境变量了吗?
  • 您应该设置 IC_CONTACT_POINTS 环境变量,或者创建 cassandra_config
  • 是的...我有 cassandra.yml 用于 env variabel config IC_CONTACT_POINTS 但是在运行测试时仍然没有读取...当我 rails s 时,服务器运行正确
  • 我的错误...我忘记为我的 cassandra.yaml 设置 ENV 测试
猜你喜欢
  • 2011-08-20
  • 2011-04-11
  • 2013-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多