That is because you are calling *invoke_additional_tasks* method on User
instance. The test case in my example is for *test_method* which is a Class
method. Please add Class method called *test_method* in User model to
reproduce the issue.
*user.rb*
class User
attr_accessor :name
class << self
def test_method
rv = validate_something("test")
return rv if rv[:error]
user = User.new
user.name = "test#{rand(1..1000000)}"
user.save!
user.invoke_additional_tasks('test_method')
return { success: true, user: user }
end
end
def invoke_additional_tasks(test)
{ success: true }
end
private
class << self
def validate_something(params)
{ success: true }
end
end
end
*user_spec.rb*
require 'rails_helper'
RSpec.describe User, type: :model do
describe 'test_method' do
context 'when validate_something returns success' do
before(:each) do
allow(User).to receive(:validate_something).and_return(success: true)
end
it 'should invoke_additional_tasks on user' do
expect_any_instance_of(User).to
receive(:invoke_additional_tasks).with('test_method')
User.test_method
end
end
end
end
On Monday, February 8, 2021 at 9:07:27 PM UTC+5:30 [email protected] wrote:
> I can't reproduce the failure with a slightly simplified version.
>
> class User
> attr_accessor :name
>
> def invoke_additional_tasks(test)
> { success: true }
> end
>
> private
>
> class << self
> def validate_something(params)
> { success: true }
> end
> end
> end
>
> RSpec.describe User do
> describe 'test_method' do
> context 'when validate_something returns success' do
> before(:each) do
> allow(User).to receive(:validate_something).and_return(success: true)
> end
>
> it 'should invoke_additional_tasks on user' do
> expect_any_instance_of(User).to
> receive(:invoke_additional_tasks).with('test_method')
>
> user = User.new
> user.name = "test#{rand(1..1000000)}"
> user.invoke_additional_tasks('test_method')
> end
> end
> end
> end
>
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/rspec/1dfe0ef4-6f06-4d77-a3aa-a9ed0cba2bb2n%40googlegroups.com.