以下是该应用/模型/ websites.rb摩卡+黄瓜嘲笑净响应
class Masterpiece < ActiveRecord::Base
validates_presence_of :title, :link
validates_uri_existence_of :link, :allow_redirect => false
end
第二验证是从插件Validates Existence of URI插件
以下为特征/支持/ mocha.rb文件
require 'mocha'
World(Mocha::API)
Before do
mocha_setup
@http_mock = mock('Net::HTTPResponse')
@http_mock.stubs(:code => '200', :message => "OK", :content_type => "text/html", :body => '<title>Test</title><body>Body of the page</body>')
Net::HTTP.expects(:get_response).returns(@http_mock)
#Website.expects(:validates_uri_existence_of).returns(true)
end
After do
begin
mocha_verify
ensure
mocha_teardown
end
end
但是当我尝试运行黄瓜功能,它会尝试创建记录和保存上述插件之前会尝试检查过氖t得到回应。没关系。
但是,当我想要得到它嘲笑的测试环境中,我试图用摩卡。
我应如何编写代码来嘲笑净响应或类方法validates_uri_existence_of流畅运行测试?
好吧,我改变了支持/ mocha.rb文件作为你建议。 之前做 mocha_setup 网:: HTTP.expects(:get_response).returns(净:: HTTPSuccess.allocate) 结束 但现在当我运行的特点,显示下面的错误! 不是所有的期望都满足 不满意的期望: - 预计只有一次,没有调用:净:: HTTP.get_response(any_parameters) (摩卡:: ExpectationError) – Autodidact 2009-10-03 07:51:16
不知道为什么它不会被调用。如果它的目的是无法一直叫你应该使用'stubs'而不是预期(同样的工作,不会导致不触发时失效)。 听起来像Fakeweb foo(@Radar提到的)是一个更好的解决方案。嘲讽低水平几乎总是会引起头痛。 – cwninja 2009-10-03 19:00:19
谢谢。我现在通过在代码末尾添加.at_most(4)来解决它,并且它工作正常。但是我仍然不满意这个解决方案。在进入摩卡之前,我查看了FakeWeb,但没有找到代替摩卡的代码行。你可以给我这行代码,使这个工作使用FakeWeb? – Autodidact 2009-10-07 15:11:39