gpt4 book ai didi

Rspec 错误无法从回溯中找到匹配的行

转载 作者:行者123 更新时间:2023-12-05 00:30:52 24 4
gpt4 key购买 nike

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

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

我试过弄乱不同版本的 capybara 、rspec-rails 和咆哮,但老实说,我真的不知道我在这里做什么,也不真正理解错误。我真的很感谢任何可以为我指明正确方向的人的帮助。

这是我的样本 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

谢谢阅读!

最佳答案

这里的问题是你没有为 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 解释器不能总是查明程序中引发错误的确切行,例如当存在堆栈级别深度错误时”,但我不确定为什么在这种情况下不能。

关于Rspec 错误无法从回溯中找到匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15724741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com