다음은 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 플러그인입니다.
다음은 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
그러나 오이 기능을 실행하려고하면 레코드를 만들려고합니다. 그리고 위의 플러그인을 저장하기 전에 Net을 통해 응답을 얻으려고 시도합니다. 괜찮아.
그러나 테스트 환경에서 조롱을 받고 싶을 때 모카를 사용하려고합니다.
테스트를 원활하게 실행하려면 넷 응답 또는 validates_uri_existence_of 클래스 메소드를 조롱하는 코드를 어떻게 작성해야합니까 ??
글쎄, 필자가 제안한대로 support/mocha.rb 파일을 변경했습니다. (: get_response) .returns (NET : HTTPSuccess.allocate) 끝 하지만이 기능을 실행하면 이제, 다음과 같은 오류가 표시되기 전에 는 mocha_setup에게 순 :: HTTP.expects을! 넷 :: HTTP.get_response (any_parameters)가 호출되지 않는 이유를 (모카 :: ExpectationError) – Autodidact
없음 아이디어 : - 정확히 한 번만 예상, 아직 호출 : 모든 기대는 만족의 기대를 만족시켰다. 항상 호출되는 것이 아니라면 expect (같은 작업, 트리거되지 않을 때 실패하지는 않음) 대신에'stubs'를 사용해야합니다. Fakeweb foo (@Radar 언급)와 같은 사운드는 훨씬 좋은 솔루션입니다. 저조한 수준에서의 조롱은 거의 항상 두통을 일으 킵니다. – cwninja
감사합니다. 이제 코드 끝 부분에 .at_most (4)를 추가하여 해결했습니다. 하지만 여전히이 솔루션에 만족하지 않습니다. 나는 모카 (Mcha)에 뛰어 들기 전에 FakeWeb을 보았지만 모카 (Mocha)를 대체 할 코드 라인을 찾지 못했다. FakeWeb을 사용하여이 코드를 작성해 줄 수 있습니까? – Autodidact