这是完成 Ruby on Rails 教程后的后续内容。
我花了很长时间尝试混合和匹配宝石以找到解决方案,因为我真的不知道 Rspec 是如何在识别“变化”时遇到困难的。
错误:/spec/requests/athletes_spec.rb:20:in
':未定义方法中的块(3级)change' for #<Class:0x00000100e715e8> (NoMethodError)
require 'spec_helper'
describe "Athletes" do
before(:each) do
@attr = { :gender => "male",
:age => 20,
:height => 120,
:weight => 100,
:skill => 2
}
@user = Factory(:user)
end
describe "Creating Athletes" do
describe "with the correct user should work" do
lambda do
post :create, :athlete => @attr
end.should_not change(Athlete, :count)
end
end
end
我喜欢 TDD 的概念,但似乎有一半的时间我试图让测试环境正常工作。谁能告诉我哪里出错了?
进一步编辑:
这是我的 Gemfile:
source 'http://rubygems.org'
gem 'rails', '3.0.4'
gem 'sqlite3-ruby', '1.3.2', :require => 'sqlite3'
gem "will_paginate", "3.0.pre2"
gem 'jquery-rails', '>= 0.2.6'
group :development do
gem 'rspec-rails', '2.5.0'
gem 'annotate-models'
end
group :test do
gem 'factory_girl_rails'
gem 'rspec', '2.5.0'
gem 'webrat'
end