0

以下是app/models/websites.rb

class Masterpiece < ActiveRecord::Base
    validates_presence_of :title, :link
    validates_uri_existence_of :link, :allow_redirect => false
end

第二个验证来自插件Validates Existence of URI plugin

以下是 features/support/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

但是当我尝试运行黄瓜功能时,它会尝试创建记录,并且在保存上述插件之前会尝试检查网络以获取响应。没关系。
但是当我想在测试环境中模拟它时,我正在尝试使用 mocha。

我应该如何编写代码来模拟网络响应或类方法validates_uri_existence_of以顺利运行测试?

4

2 回答 2

2

我建议为此使用Fakeweb,因为它非常适合。

于 2009-10-03T02:14:40.237 回答
2

模拟需要是正确的类。尝试:

Net::HTTP.expects(:get_response).returns(Net::HTTPSuccess.allocate)

Class#allocate实例化一个类而不调用初始化)

于 2009-10-02T20:02:51.380 回答