Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
516 views
in Technique[技术] by (71.8m points)

ruby - Is it possible for RSpec to expect change in two tables?

RSpec expect change:

it "should increment the count" do
  expect{Foo.bar}.to change{Counter.count}.by 1
end

Is there a way to expect change in two tables?

expect{Foo.bar}.to change{Counter.count}.by 1 
and change{AnotherCounter.count}.by 1 
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I prefer this syntax (rspec 3 or later):

it "should increment the counters" do
  expect { Foo.bar }.to change { Counter,        :count }.by(1).and 
                        change { AnotherCounter, :count }.by(1)
end

Yes, this are two assertions in one place, but because the block is executed just one time, it can speedup the tests.

EDIT: Added Backslash after the .and to avoid syntax error


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...