আরএসপেক 3 - স্টাড একটি ক্লাস পদ্ধতি


97

আমি আরএসপেক ২.৯৯ থেকে আরএসপিপ ৩.০.৩ এ আপগ্রেড করছি এবং ব্যবহারের জন্য উদাহরণ পদ্ধতি রূপান্তর করেছি allow_any_instance_of, তবে শ্রেণিক পদ্ধতিতে কীভাবে আটকানো যায় তা ভেবে দেখিনি । আমার এই কোড আছে:

module MyMod
  class Utils
    def self.find_x(myarg)
      # Stuff
    end
  end
end

এবং আমার আরএসপেক 2 পরীক্ষা এটি করে:

MyMod::Utils.stub(:find_x).and_return({something: 'testing'})

এটি করার 3 টি উপায় কী?

উত্তর:


173

আপনাকে যা করতে হবে

allow(MyMod::Utils).to receive(:find_x).and_return({something: 'testing'})

ডকো মেথড স্টাবগুলি দেখুন


আমি এটি বাস্তবায়নের চেষ্টা করছি তবে আমি যখন সেই মকটি লিখি এবং তারপরে লিখি তখন expect(Class.foo).to eq(bar)একটি "ভুল সংখ্যার যুক্তি ত্রুটি" fooপাই কারণ পদ্ধতিটি সাধারণত 2 টি আর্গুমেন্ট চায় ... তবে আমি কেবল স্টাবের মধ্যে যা রেখেছি তা ফিরিয়ে দিতে চাই
ষাট

FWIW, এই ফর্মটি আমার রুবি ইন্টারপ্রিটারকে ক্র্যাশ করবে। যাইহোক, এবং_রেটনের কঠোর প্রয়োজন হয় না এবং ছেড়ে দেওয়া যায়। (আমার রুবি ইন্টারপ্রিটারও ক্রাশ হয় না))
রে ফিক্স

4
@ sixty4bit এর কোনও কারণ আছে যা আপনি যুক্তি দিয়ে কল করতে পারবেন না?
ডেভিড মোলস

4
@ ষাট4 বিটexpect(Class.foo).to receive(bar).with(arg1, arg2).and_return({..object})
zhisme
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.