Thanks, Phil. I was looking for that option (didn’t know the exact syntax) and 
could not find it. Now that I know what it is I can see that it is reasonably 
obvious in the documentation.

> On Feb 25, 2021, at 1:51 PM, Phil Pirozhkov <pirjs...@gmail.com> wrote:
> 
>      expect(subscription).to receive(:canceled_at)
> 
> is an equivalent to
> 
>      expect(subscription).to receive(:canceled_at).and_return(nil)
> 
> and no wonder
> 
>      expect(subscription.canceled_at).to eq value
> 
> fails
> 
> You are probably looking to
> 
>      expect(subscription).to receive(:canceled_at).and_call_original
> 
> On Fri, Feb 26, 2021 at 12:38 AM Jack Royal-Gordon <jac...@pobox.com> wrote:
>> 
>> I’m seeing unusual behavior when i place an "expect().to receive” on an 
>> element of a struct. Specifically, with the following code:
>> 
>>  describe 'test example of struct' do
>>    let!(:subscription) { Sub = Struct.new(:canceled_at) ; 
>> Sub.new(canceled_at: 2.weeks.from_now) }
>> 
>>    it 'behaves okay with no expectation set' do
>>      value = 2.weeks.ago
>>      subscription.canceled_at = value
>>      puts subscription.inspect
>>      expect(subscription.canceled_at).to eq value
>>    end
>> 
>>    it 'misbehaves if I place an expecation on the element' do
>>      expect(subscription).to receive(:canceled_at)
>>      value = 2.weeks.ago
>>      subscription.canceled_at = value
>>      puts subscription.inspect
>>      expect(subscription.canceled_at).to eq value
>>    end
>>  end
>> 
>> Here is the result of running those examples:
>> 
>> Run options: include 
>> {:locations=>{"./spec/models/user/stripe_customer_spec.rb"=>[362]}}
>> #<struct Sub canceled_at=Thu, 11 Feb 2021 21:24:19 UTC +00:00>
>> ./Users/jackrg/Documents/Novelty-Stats/spec/models/user/stripe_customer_spec.rb:363:
>>  warning: already initialized constant Sub
>> /Users/jackrg/Documents/Novelty-Stats/spec/models/user/stripe_customer_spec.rb:363:
>>  warning: previous definition of Sub was here
>> #<struct Sub canceled_at=Thu, 11 Feb 2021 21:24:19 UTC +00:00>
>> F
>> 
>> Failures:
>> 
>>  1) User::StripeCustomer test example of struct misbehaves if I place an 
>> expecation on the element
>>     Failure/Error: expect(subscription.canceled_at).to eq value
>> 
>>       expected: 2021-02-11 21:24:19.601491000 +0000
>>            got: nil
>> 
>>       (compared using ==)
>>     # ./spec/models/user/stripe_customer_spec.rb:377:in `block (3 levels) in 
>> <top (required)>'
>> 
>> Finished in 0.0432 seconds (files took 7.91 seconds to load)
>> 2 examples, 1 failure
>> 
>> 
>> The only difference between the two examples is the addition of the 
>> highlights line in the second example. That expectation causes the retrieval 
>> process to not work, returning nil instead of the current value (or even the 
>> initial value).
>> 
>> Is this a known issue? I can’t find it documented anywhere.
>> 
>> --
>> You received this message because you are subscribed to the Google Groups 
>> "rspec" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to rspec+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/rspec/0ED673A5-17B0-4C3B-9E0B-9C0E862279BB%40pobox.com.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "rspec" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to rspec+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/rspec/CAAk5Ok8Us_5LbZcEEkqBf5v98SHWxOhVJk8mGECMvQmDQMS-_w%40mail.gmail.com.

-- 
You received this message because you are subscribed to the Google Groups 
"rspec" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rspec+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rspec/170FDC15-9ACC-42DE-BDC1-2D5764850859%40pobox.com.

Reply via email to