ruby on rails - RSpec: كيفية اختبار ما إذا تم استدعاء طريقة؟
ruby-on-rails (2)
في rspec
الجديدة ، expect
أن يكون هذا النحو:
expect(subject).to receive(:bar).with("an argument I want")
عند كتابة اختبارات RSpec ، أجد نفسي أكتب الكثير من الكود الذي يشبه هذا من أجل التأكد من استدعاء طريقة أثناء تنفيذ اختبار (من أجل الحجة ، دعنا نقول فقط لا أستطيع حقا استجواب الدولة الكائن بعد المكالمة لأن عملية تنفيذ الأسلوب ليس من السهل رؤية تأثير).
describe "#foo"
it "should call 'bar' with appropriate arguments" do
called_bar = false
subject.stub(:bar).with("an argument I want") { called_bar = true }
subject.foo
expect(called_bar).to be_true
end
end
ما أريد معرفته هو: هل هناك بنية أجمل متوفرة أكثر من هذا؟ هل أنا في عداد المفقودين بعض الذهول RSPec غير تقليدي من شأنه أن يقلل من التعليمات البرمجية المذكورة أعلاه إلى بضعة أسطر؟ should_receive
يبدو أنه يجب أن يفعل هذا ولكن القراءة كذلك يبدو وكأنه ليس بالضبط ما يفعله.
يجب أن تعمل أدناه
describe "#foo"
it "should call 'bar' with appropriate arguments" do
subject.stub(:bar)
subject.foo
expect(subject).to have_received(:bar).with("Invalid number of arguments")
end
end
التوثيق: https://github.com/rspec/rspec-mocks#expecting-arguments