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 に答える