【问题标题】:Rspec error cannot find matching line from backtraceRspec 错误无法从回溯中找到匹配的行
【发布时间】:2013-03-30 23:42:13
【问题描述】:

我为我的用户模型编写了一组 23 个测试,所有测试都失败并出现以下错误:

Failure/Error: Unable to find matching line from backtrace 
ArgumentError: 
  block not supplied

我尝试过使用不同版本的 capybara、rspec-rails 和 growl,但老实说,我真的不知道我在这里做什么,也不太了解错误。我非常感谢任何可以为我指明正确方向的人的帮助。

这是我的 user_spec.rb 文件中的一个示例

require 'spec_helper'

describe User do
  before @user = User.new(name: 'example', password: 'foobar', password_confirmation: 'foobar',
                        email: 'example@example.com', description: 'Lorem ipsum dolor...')

  subject { @user }

  it { should respond_to(:name) }
  it { should respond_to(:email) }
  it { should respond_to(:password) }
  it { should respond_to(:password_confirmation) }
  it { should respond_to(:password_digest) }
  it { should respond_to(:description) }
  it { should respond_to(:admin) }
  it { should respond_to(:remember_token) }

  describe "when name is not present" do
    before { @user.name = " " }
    it { should_not be_valid }
  end
  .
  .
  .
end

这里是我Gemfile的相关部分:

group :development do
  gem 'rspec-rails', '2.11.0'
  gem 'guard'
  gem 'guard-spork', :github => 'guard/guard-spork'
  gem 'guard-rspec'
  gem 'spork'
  gem 'sqlite3'
end

group :test do
  gem 'capybara', '1.1.2'
  gem 'rb-fsevent', '0.9.1', :require => false
  gem 'growl', '1.0.3'
  gem 'factory_girl_rails', '4.1.0'
end

感谢阅读!

【问题讨论】:

    标签: rspec rspec-rails


    【解决方案1】:

    这里的问题是你没有为 before 方法指定一个块:

    before @user = User.new(name: 'example', password: 'foobar', password_confirmation: 'foobar',
                        email: 'example@example.com', description: 'Lorem ipsum dolor...')
    

    应该是:

    before do
      @user = User.new(name: 'example', password: 'foobar', password_confirmation: 'foobar',
                        email: 'example@example.com', description: 'Lorem ipsum dolor...')
    end
    

    诚然,错误信息在这里不是很有帮助。 Ruby 解释器不能总是精确定位程序中引发错误的确切行,例如当存在堆栈级别深度错误时'但我不确定为什么在这种情况下它不能。

    【讨论】:

    • 非常感谢!那个愚蠢的小语法错误快把我逼疯了。
    【解决方案2】:

    我遇到了这个问题并且能够找到我的答案here。虽然 in 在这种情况下不适用,但我的问题是 Rails 3 不允许符号来命名描述块,即您必须使用 describe 'create' 而不是 describe :create

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多