Webmock: لا يمكنك الحصول على مثال بسيط للعمل؟

تم إنشاؤها على ٢٥ مايو ٢٠١٦  ·  5تعليقات  ·  مصدر: bblimke/webmock

أهلا،

أحاول إعداد مثال أساسي ولكن يبدو أنني أخفق في الحصول على WebMock لإيقاف طلبات GET التي يحاول المثال الخاص بي تقديمها.

أنا أستخدم نظام التشغيل Mac OS X ( 10.11.5 ) مع إصدار Ruby بخلاف النظام 2.1.2 (تم ضبطه بواسطة rbenv ).

تبدو حالة الاختبار المصغرة الخاصة بي كما يلي:

require "webmock"
require "faraday"
require "pry"

endpoint = "http://www.beepbeepbeepboop.com"

WebMock.stub_request(:any, endpoint).to_return(:body => "foobar")

uri = URI.parse(endpoint)
http = Net::HTTP.new(uri.host)
http.get(uri.request_uri)      # SocketError: getaddrinfo: nodename nor servname provided, or not known

f = Faraday.new(nil, nil)
f.get endpoint                 # Faraday::ConnectionFailed: getaddrinfo: nodename nor servname provided, or not known

p "done"

ملاحظة: لقد حاولت تبديل ترتيب require "webmock" و require "faraday"
لكن ذلك لم يحدث فرقًا في النتيجة

التعليق الأكثر فائدة

require 'webmock' لم يقم بتمكينه منذ الإصدار 2.0.0
يجب عليك إضافة WebMock.enable!

ال 5 كومينتر

لقد قمت بإيقاف " http://www.beepbeepbeepboop.com " مع استجابة foobar وقمت بتقديم طلبات إلى Google.

require 'webmock' لم يقم بتمكينه منذ الإصدار 2.0.0
يجب عليك إضافة WebMock.enable!

آها ، هناك نذهب WebMock.enable! فعل الحيلة 👍 شكرًا لك

bblimke شكرا جزيلا. أنا في حيرة من أمري حقًا لماذا كانت هناك حاجة إلى ذلك.

لم ينجح هذا الاختبار بسبب عدم قيام كعب الروتين بإثارة الاستثناء كما هو متوقع:

        before do
          stub_request(:post, url)
            .with(http_params)
            .to_raise(Faraday::ConnectionFailed)
        end

        it { is_expected.to raise_error(MyCustomError) }

ولكن بعد إضافة WebMock.enable! إلى rails_helper.rb ، عملت بشكل جيد. ما يحيرني هو أنني أستخدم WebMock في كل مكان في اختباراتي وكان يعمل بشكل جيد هناك ، فهل من المحتمل أن يكون هذا خطأ في WebMock؟

في كلتا الحالتين ، إنه يعمل ، لذا فأنا سعيد ، لكن لدي فضول لماذا احتاج إلى مكالمة صريحة لتمكين WebMock على الرغم من أن البذرات الأخرى تعمل بشكل جيد على ما يبدو. شكرا جزيلا على كل حال!

bobf أعتقد أنك تحتاج إلى "webmock / rspec" الذي يستدعي المكالمات Webmock.enable!

لست متأكدًا من المواصفات الفردية الخاصة بك حيث يمكن أن تكون مرتبطة بمشروعك. إذا كنت قادرًا على استخراج الكود إلى مشروع نموذجي لإعادة إنتاجه ، فيمكنني إلقاء نظرة عليه.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

Morred picture Morred  ·  14تعليقات

lokenmakwana picture lokenmakwana  ·  6تعليقات

dnesteryuk picture dnesteryuk  ·  6تعليقات

leifg picture leifg  ·  19تعليقات

majioa picture majioa  ·  4تعليقات