before { @user = User.new(name: "Example User", email: "user@example.com") }
#在各测试用例之前执行块中的代码,本例中这个块的作用是为
# User.new 传入一个合法的初始 Hash 参数,创建 @user 实例变量
subject { @user } #把 @user 设为这些测试用例默认的测试对象
it { should respond_to(:name) }
it { should respond_to(:email) }
#两个测试用例对 name 和 email 属性的存在性进行了测试
@user.respond_to?(:name)
在 RSpec 中可以写成
it "should respond to 'name'" do
expect(@user).to respond_to(:name)
end
验证值不能为空:presence
app/models/user.rb中
class User < ActiveRecord::Base
validates :name, presence: true
end
在测试文件中
it {should be_valid}
describe "when name is not present" do
before{@user.name=""}
it{should_not be_valid}
验证字符串长度length
validates :name, presence: true,length{maximum:12}