0

我正在学习 rails 和 rspec,并且不要理解这两个代码之间的区别:

在我的 spec/models/user_spec.rb 我有:

describe User do$
  before { @user = User.new(name: "Example User", email: "user@example.com") }
  subject {@user}

现在我检查名称格式:

describe "when name has wrong format" do
  it "should not be valid" do    
    names = %w[%marcin ??? 123 ___123 ___] 
    names.each do |invalid_name|   
      @user.name = invalid_name      
      it{should_not be_valid}        
    end
  end
end

它不起作用,但是当我使用它@user.should_not be_valid而不是it{should_not be_valid}它时,它可以正常工作,我不明白为什么我有subject {@user},所以我认为it {should 意味着相同@user.should

4

1 回答 1

1
describe User do
  subject do
    User.new(name: name, email: "user@example.com")
  end

  describe "#name" do  
    context "Just Numbers" do
      let(:name) { "123" }
      it { should_not be_valid }
    end
  end
end
于 2012-09-07T15:15:00.257 回答