I have problem with Bogus and Celluloid. Bogus expects that Method object will be respond to name method. But Celluloid::Method does not respond for this method.
How to reproduce:
# celluloid_spec.rb
class Actor
include Celluloid
def test_method
puts "hello"
end
end
require 'rspec'
require 'bogus/rspec'
describe Actor do
fake(:actor)
before { stub(subject).test_method { "value" } }
it "returns value" do
subject.test_method.should == "value"
end
end
And we can execute spec for that
Failures:
1) Actor returns value
Failure/Error: before { stub(subject).test_method { "value" } }
NoMethodError:
undefined method `name' for #<Celluloid::Method Actor#test_method>
# ./celluloid_method.rb:17:in `block (2 levels) in <top (required)>'
Finished in 0.00818 seconds
1 example, 1 failure
I created workaround for that: https://github.com/LTe/dht/blob/master/spec/support/celluloid_method.rb
Solutions:
- Create pull request to celluloid.
- Bogus should display information about problem with method object.
- Add information to wiki about - how to test celluloid actors.
I have problem with
BogusandCelluloid. Bogus expects thatMethodobject will be respond tonamemethod. ButCelluloid::Methoddoes not respond for this method.How to reproduce:
And we can execute spec for that
I created workaround for that: https://github.com/LTe/dht/blob/master/spec/support/celluloid_method.rb
Solutions: