0

以下はapp/models/websites.rbです

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

2番目の検証はプラグインからのものですURIプラグインの存在を検証します

以下は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#allocateinitialize を呼び出さずにクラスをインスタンス化します)

于 2009-10-02T20:02:51.380 に答える