我是模拟对象的新手,我正在努力学习如何在RSpec中使用它们.有人可以发布一个示例(hello RSpec Mock object world类型示例)或一个关于如何使用RSpec Mock object API的链接(或任何其他参考)吗?
我是模拟对象的新手,我正在努力学习如何在RSpec中使用它们.有人可以发布一个示例(hello RSpec Mock object world类型示例)或一个关于如何使用RSpec Mock object API的链接(或任何其他参考)吗?
下面是我在rails应用程序中为控制器测试所做的一个简单模拟示例:
before(:each) do
@page = mock_model(Page)
@page.stub!(:path)
@page.stub!(:find_by_id)
@page_type = mock_model(PageType)
@page_type.stub!(:name)
@page.stub!(:page_type).and_return(@page_type)
end
在这种情况下,我是在嘲笑页面&;PageType模型(对象)以及我调用的一些方法.
这使我能够运行这样的测试:
it "should be successful" do
Page.should_receive(:find_by_id).and_return(@page)
get 'show', :id => 1
response.should be_success
end
我知道这个答案更具体,但我希望它能帮你一点忙.
Edit
好的,这是一个hello world的例子...
给出以下脚本(hello.rb):
class Hello
def say
"hello world"
end
end
我们可以创建以下规范(hello_spec.rb):
require 'rubygems'
require 'spec'
require File.dirname(__FILE__) + '/hello.rb'
describe Hello do
context "saying hello" do
before(:each) do
@hello = mock(Hello)
@hello.stub!(:say).and_return("hello world")
end
it "#say should return hello world" do
@hello.should_receive(:say).and_return("hello world")
answer = @hello.say
answer.should match("hello world")
end
end
end