0

如果具有给定属性的记录不存在,我对插入或返回第一条记录的方法进行 rspec 测试。看起来像这样

context "user doesn't exist" do
  subject { User.find_or_create(name: "Jonh", login: "john") }

  it { should be_an_instance_of(User) }

  //and here I want to test that new user was inserted into database...

end

但我不知道如何使用expect to change它。

4

1 回答 1

2

我通常对此进行测试的方法是查找要更改的对象的数量:

it "creates a new user object" do
  expect {
    User.find_or_create(name: "John", login: "john")
  }.to change{User.count}.by(1)
end

诚然,它不太适合subject您开始使用的模式,但是当您测试某种方法导致系统状态发生变化时,它是必要的邪恶,而不是测试对象是否具有某些属性.

于 2012-11-06T00:54:31.630 回答