Hello. How can I test object to receive message and compare arguments of this message with value evaluated at present time? It is possible? For example: should_receive(:api_send).with( -> { players.count } ) And players.count will be called and evaluated only when api_send is received. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20120804/650589f5/attachment.html>
On Sat, Aug 4, 2012 at 1:46 PM, Alexander Baronec <abonec at gmail.com> wrote:> Hello. > How can I test object to receive message and compare arguments of this > message with value evaluated at present time? It is possible? > > For example: > > should_receive(:api_send).with( -> { players.count } ) And players.count > will be called and evaluated only when api_send is received.Look at Fake Implementation on https://www.relishapp.com/rspec/rspec-mocks/v/2-11/docs/method-stubs. You can do the same thing w/ should_receive, e.g. foo.should_receive(:api_send) do |player_count| player_count.should eq players.count end HTH, David
It don''t work when object received few messages. I described it there: http://stackoverflow.com/questions/11669979/should-recieve-alongside-other-messages 2012/8/5 David Chelimsky <dchelimsky at gmail.com>> On Sat, Aug 4, 2012 at 1:46 PM, Alexander Baronec <abonec at gmail.com> > wrote: > > Hello. > > How can I test object to receive message and compare arguments of this > > message with value evaluated at present time? It is possible? > > > > For example: > > > > should_receive(:api_send).with( -> { players.count } ) And players.count > > will be called and evaluated only when api_send is received. > > Look at Fake Implementation on > https://www.relishapp.com/rspec/rspec-mocks/v/2-11/docs/method-stubs. > You can do the same thing w/ should_receive, e.g. > > foo.should_receive(:api_send) do |player_count| > player_count.should eq players.count > end > > HTH, > David > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >-- ? ?????????? ???????????, ????????? -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20120806/32c64aae/attachment-0001.html>
On Mon, Aug 6, 2012 at 3:48 AM, Alexander Baronec <abonec at gmail.com> wrote:> 2012/8/5 David Chelimsky <dchelimsky at gmail.com> >> >> On Sat, Aug 4, 2012 at 1:46 PM, Alexander Baronec <abonec at gmail.com> >> wrote: >> > Hello. >> > How can I test object to receive message and compare arguments of this >> > message with value evaluated at present time? It is possible? >> > >> > For example: >> > >> > should_receive(:api_send).with( -> { players.count } ) And players.count >> > will be called and evaluated only when api_send is received. >> >> Look at Fake Implementation on >> https://www.relishapp.com/rspec/rspec-mocks/v/2-11/docs/method-stubs. >> You can do the same thing w/ should_receive, e.g. >> >> foo.should_receive(:api_send) do |player_count| >> player_count.should eq players.count >> end >> >> HTH, >> David> It don''t work when object received few messages. I described it there: > http://stackoverflow.com/questions/11669979/should-recieve-alongside-other-messagesshould_receive, by default, expects exactly one call, but there are a number of ways for you to specify more than one call. One possibility would be: foo.should_receive(:api_send).ordered foo.should_receive(:api_send).with(2).ordered See http://rubydoc.info/gems/rspec-mocks for more info
I wan''t to test order of received messages. I want to test only one message of few and compare it with real-time value. It''s not possible? 2012/8/6 David Chelimsky <dchelimsky at gmail.com>> On Mon, Aug 6, 2012 at 3:48 AM, Alexander Baronec <abonec at gmail.com> > wrote: > > 2012/8/5 David Chelimsky <dchelimsky at gmail.com> > >> > >> On Sat, Aug 4, 2012 at 1:46 PM, Alexander Baronec <abonec at gmail.com> > >> wrote: > >> > Hello. > >> > How can I test object to receive message and compare arguments of this > >> > message with value evaluated at present time? It is possible? > >> > > >> > For example: > >> > > >> > should_receive(:api_send).with( -> { players.count } ) And > players.count > >> > will be called and evaluated only when api_send is received. > >> > >> Look at Fake Implementation on > >> https://www.relishapp.com/rspec/rspec-mocks/v/2-11/docs/method-stubs. > >> You can do the same thing w/ should_receive, e.g. > >> > >> foo.should_receive(:api_send) do |player_count| > >> player_count.should eq players.count > >> end > >> > >> HTH, > >> David > > > It don''t work when object received few messages. I described it there: > > > http://stackoverflow.com/questions/11669979/should-recieve-alongside-other-messages > > should_receive, by default, expects exactly one call, but there are a > number of ways for you to specify more than one call. One possibility > would be: > > foo.should_receive(:api_send).ordered > foo.should_receive(:api_send).with(2).ordered > > See http://rubydoc.info/gems/rspec-mocks for more info > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >-- ? ?????????? ???????????, ????????? -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20120806/10f96650/attachment.html>
On Mon, Aug 6, 2012 at 9:21 AM, Alexander Baronec <abonec at gmail.com> wrote:> 2012/8/6 David Chelimsky <dchelimsky at gmail.com> >> >> On Mon, Aug 6, 2012 at 3:48 AM, Alexander Baronec <abonec at gmail.com> >> wrote: >> > 2012/8/5 David Chelimsky <dchelimsky at gmail.com> >> >> >> >> On Sat, Aug 4, 2012 at 1:46 PM, Alexander Baronec <abonec at gmail.com> >> >> wrote: >> >> > Hello. >> >> > How can I test object to receive message and compare arguments of >> >> > this >> >> > message with value evaluated at present time? It is possible? >> >> > >> >> > For example: >> >> > >> >> > should_receive(:api_send).with( -> { players.count } ) And >> >> > players.count >> >> > will be called and evaluated only when api_send is received. >> >> >> >> Look at Fake Implementation on >> >> https://www.relishapp.com/rspec/rspec-mocks/v/2-11/docs/method-stubs. >> >> You can do the same thing w/ should_receive, e.g. >> >> >> >> foo.should_receive(:api_send) do |player_count| >> >> player_count.should eq players.count >> >> end >> >> >> >> HTH, >> >> David >> >> > It don''t work when object received few messages. I described it there: >> > >> > http://stackoverflow.com/questions/11669979/should-recieve-alongside-other-messages >> >> should_receive, by default, expects exactly one call, but there are a >> number of ways for you to specify more than one call. One possibility >> would be: >> >> foo.should_receive(:api_send).ordered >> foo.should_receive(:api_send).with(2).ordered >> >> See http://rubydoc.info/gems/rspec-mocks for more info> I wan''t to test order of received messages. I want to test only one message > of few and compare it with real-time value. > It''s not possible?It is, but you have to specify which time it should care if you''re going to compare it to a real time value.