我已经为我的用户模型编写了一组23个测试,并且所有测试都失败并出现以下错误:
Failure/Error: Unable to find matching line from backtrace
ArgumentError:
block not supplied
Run Code Online (Sandbox Code Playgroud)
我曾尝试搞乱不同版本的水豚,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
Run Code Online (Sandbox Code Playgroud)
以下是我的相关部分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
Run Code Online (Sandbox Code Playgroud)
谢谢阅读!
这里的问题是你没有为before方法指定一个块:
before @user = User.new(name: 'example', password: 'foobar', password_confirmation: 'foobar',
email: 'example@example.com', description: 'Lorem ipsum dolor...')
Run Code Online (Sandbox Code Playgroud)
应该:
before do
@user = User.new(name: 'example', password: 'foobar', password_confirmation: 'foobar',
email: 'example@example.com', description: 'Lorem ipsum dolor...')
end
Run Code Online (Sandbox Code Playgroud)
不可否认,错误消息在这里不是很有帮助.Ruby解释器不能总是精确定位在引发错误的程序,例如精确线时,有一个堆栈级深度错误",但我不知道为什么它不能在这种情况下.
| 归档时间: |
|
| 查看次数: |
9449 次 |
| 最近记录: |