Skip to content

Commit

Permalink
Very basic specs for stub + mocks support
Browse files Browse the repository at this point in the history
  • Loading branch information
adambeynon committed Nov 9, 2013
1 parent e309d0d commit 1b38065
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 4 deletions.
10 changes: 6 additions & 4 deletions Gemfile
Expand Up @@ -3,8 +3,10 @@ gemspec

gem 'rake'

gem 'rspec', '3.0.0.beta1'
gem 'rspec-support', '3.0.0.beta1'
gem 'rspec-core', '3.0.0.beta1'
gem 'opal', :github => 'opal/opal'

gem 'rspec', '3.0.0.beta1'
gem 'rspec-support', '3.0.0.beta1'
gem 'rspec-core', '3.0.0.beta1'
gem 'rspec-mocks', '3.0.0.beta1'
gem 'rspec-expectations', '3.0.0.beta1'
gem 'rspec-mocks', '3.0.0.beta1'
14 changes: 14 additions & 0 deletions opal/opal/rspec/fixes.rb
Expand Up @@ -62,3 +62,17 @@ def self.disambiguate(name, const_scope)
name
end
end

# Opal does not support ObjectSpace, so force object __id__'s
class RSpec::Mocks::Space
def id_for(object)
object.__id__
end
end

# Buggy under Opal?
class RSpec::Mocks::MethodDouble
def save_original_method!
@original_method ||= @method_stasher.original_method
end
end
37 changes: 37 additions & 0 deletions spec/mock_spec.rb
@@ -0,0 +1,37 @@
describe "RSpec mocks" do
describe "stubs" do
it "can stub basic methods" do
obj = Object.new
expect(obj).to receive(:foo) { 100 }
obj.foo.should == 100
end

it "raises an exception when stub returns wrong value" do
expect {
obj = Object.new
expect(obj).to receive(:bar) { 400 }
obj.bar.should == 42
}.to raise_error(Exception)
end
end

describe "doubles" do
it "define methods on double" do
person = double("person", :name => "Adam")
expect(person.name).to eq("Adam")
end

it "once" do
person = double("person")
expect(person).to receive(:name).once
person.name.should eq(nil)
end

it "twice" do
person = double("person")
expect(person).to receive(:name).twice
person.name
person.name
end
end
end

0 comments on commit 1b38065

Please sign in to comment.