Created
November 28, 2012 15:00
-
-
Save shingara/4161813 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ rspec -b -I. search_spec.rb [16:15:14] | |
An error occurred in an around(:each) hook | |
RuntimeError: can't modify frozen Class | |
occurred at /Users/cyrilmougel/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-mocks-2.12.0/lib/rspec/mocks/method_double.rb:152:in `remove_method' | |
F | |
Failures: | |
1) Search#boats return Array | |
Failure/Error: search.boats.should be_a(Array) | |
RuntimeError: | |
can't modify frozen Array | |
# /Users/cyrilmougel/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-mocks-2.12.0/lib/rspec/mocks/proxy.rb:118:in `record_message_received' | |
# /Users/cyrilmougel/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-mocks-2.12.0/lib/rspec/mocks/test_double.rb:69:in `method_missing' | |
# ./search.rb:9:in `block in boats' | |
# ./search.rb:8:in `tap' | |
# ./search.rb:8:in `boats' | |
# /Users/cyrilmougel/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/adamantium-0.0.3/lib/adamantium/module_methods.rb:80:in `call' | |
# /Users/cyrilmougel/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/adamantium-0.0.3/lib/adamantium/module_methods.rb:80:in `block (2 levels) in define_memoize_method' | |
# /Users/cyrilmougel/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/adamantium-0.0.3/lib/adamantium/module_methods.rb:79:in `fetch' | |
# /Users/cyrilmougel/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/adamantium-0.0.3/lib/adamantium/module_methods.rb:79:in `block in define_memoize_method' | |
# ./search_spec.rb:11:in `block (2 levels) in <top (required)>' | |
# /Users/cyrilmougel/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.12.0/lib/rspec/core/example.rb:114:in `instance_eval' | |
# /Users/cyrilmougel/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.12.0/lib/rspec/core/example.rb:114:in `block in run' | |
# /Users/cyrilmougel/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.12.0/lib/rspec/core/example.rb:254:in `with_around_each_hooks' | |
# /Users/cyrilmougel/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.12.0/lib/rspec/core/example.rb:111:in `run' | |
# /Users/cyrilmougel/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.12.0/lib/rspec/core/example_group.rb:388:in `block in run_examples' | |
# /Users/cyrilmougel/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.12.0/lib/rspec/core/example_group.rb:384:in `map' | |
# /Users/cyrilmougel/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.12.0/lib/rspec/core/example_group.rb:384:in `run_examples' | |
# /Users/cyrilmougel/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.12.0/lib/rspec/core/example_group.rb:369:in `run' | |
# /Users/cyrilmougel/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.12.0/lib/rspec/core/command_line.rb:28:in `block (2 levels) in run' | |
# /Users/cyrilmougel/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.12.0/lib/rspec/core/command_line.rb:28:in `map' | |
# /Users/cyrilmougel/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.12.0/lib/rspec/core/command_line.rb:28:in `block in run' | |
# /Users/cyrilmougel/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.12.0/lib/rspec/core/reporter.rb:34:in `report' | |
# /Users/cyrilmougel/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.12.0/lib/rspec/core/command_line.rb:25:in `run' | |
# /Users/cyrilmougel/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.12.0/lib/rspec/core/runner.rb:69:in `run' | |
# /Users/cyrilmougel/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.12.0/lib/rspec/core/runner.rb:8:in `block in autorun' | |
Finished in 0.0036 seconds | |
1 example, 1 failure | |
Failed examples: | |
rspec ./search_spec.rb:7 # Search#boats return Array |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'adamantium' | |
class Search | |
include Adamantium | |
def boats | |
[].tap do |_boats| | |
request.boats.each do |boat| | |
_boats << Sedna::Boat.new(boat) | |
end | |
end | |
end | |
memoize :boats | |
def request | |
SearchRequest.new | |
end | |
memoize :request | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'search' | |
class SearchRequest | |
end | |
module IceNine | |
class Freezer | |
class Spec < NoFreeze | |
end | |
end | |
end | |
describe Search, '#boats' do | |
let(:search) { Search.new } | |
it 'return Array' do | |
SearchRequest.should_receive(:new).and_return( | |
double(:search_request, :boats => [{}]) | |
) | |
search.boats.should be_a(Array) | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Solution + Refactoring into simpler code: