আরএসপেক নিয়ন্ত্রক পরীক্ষা - ফাঁকা রেসপন্স.বডি


103

আরএসপেকের সাথে আমার কন্ট্রোলারদের পরীক্ষা করার সময় আমি একটি সমস্যার সাথে আটকে আছি - রেসপন্স.বডি কল সর্বদা একটি খালি স্ট্রিং দেয়। ব্রাউজারে সবকিছু সঠিকভাবে রেন্ডার করে, এবং শসা বৈশিষ্ট্য পরীক্ষাগুলি সঠিক হয়ে গেছে বলে মনে হয়, তবে আরএসপেক প্রতিবার ব্যর্থ হয়।

প্রতিক্রিয়া অবজেক্টের অন্যান্য প্রত্যাশা যেমন response.should render_template('index')কোনও সমস্যা ছাড়াই পাস।

এর আগে কি আপনারা কেউ এই সমস্যার মুখোমুখি হয়েছেন? সম্ভবত প্রতিক্রিয়া এইচটিএমএল অন্য কোনও উপায়ে পাওয়া যাবে?

সংস্করণ হিসাবে, রেলগুলি 2.1.0, আরএসপেক 1.2.7।

উত্তর:


194

ডিফল্টরূপে, আরএসপেক-রেলগুলি প্রকৃতপক্ষে দেখার টেমপ্লেটগুলি রেন্ডারিং থেকে আটকাতে রেলগুলিতে হ্যাক করে । আপনার কেবলমাত্র আপনার ক্রিয়াকলাপের পরীক্ষা করা উচিত এবং আপনার নিয়ামক পরীক্ষাগুলি ফিল্টার করতে হবে, টেমপ্লেট রেন্ডারিংয়ের ফলাফল নয় - যা দেখার জন্য চশমা।

তবে, আপনি যদি অ্যাপ্লিকেশন হিসাবে আপনার নিয়ামক চশমা টেম্পলেটগুলি রেন্ডার করতে চান তবে render_viewsনির্দেশটি ব্যবহার করুন :

describe YourController do
  render_views
  ...
end

2
ধন্যবাদ, আমার ঠিক যা প্রয়োজন ছিল।
টমস মিকোসস

2
আমি বছরের পর বছর ধরে রেলগুলির সাথে কাজ করছি এবং এখন অবশেষে আমি নিয়ামক এবং অনুরোধের চশমাগুলির মধ্যে পার্থক্যটি বুঝতে পারি। ধন্যবাদ!
ব্রায়ান আন্ডারউড


2

আমি যেমন একটি অনুরূপ সমস্যার সাথে কাজ করেছি (যা আমাকে এই প্রশ্নের দিকে পরিচালিত করেছে), আমার কাছে ঘটেছিল যে একই বিড়ালের চামড়ার বিভিন্ন উপায় রয়েছে। অন্য কথায়, বডি টেক্সটটি পরীক্ষা করার পরিবর্তে আপনি ফ্ল্যাশের সামগ্রীটি পরীক্ষা করতে সক্ষম হতে পারেন।

response.body.should =~ /Invalid email or password/

এটি একটি সমতুল্য চেক হতে পারে:

flash[:alert].should == "Invalid email or password"

আমার কাছে পরেরটি কিছুটা নমনীয় বলে মনে হচ্ছে এটি যেহেতু চলবে, তবে এটি সব ক্ষেত্রেই উপযুক্ত নাও হতে পারে।

চিয়ার্স,

জন


2

ডিফল্টরূপে, আরএসপেক-রেল কনফিগারেশন নিয়ন্ত্রণকারী চশমাগুলির জন্য টেম্পলেটগুলির রেন্ডারিং অক্ষম করে

এটি ঠিক করার অন্যতম উপায় হ'ল render_viewsআপনার rails_helper.rbফাইলে সেটিংস সক্ষম করার বিষয়টি নিশ্চিত করে । এইভাবে, আপনি আপনার সমস্ত পরীক্ষায় এটি বিশ্বব্যাপী কাজ করতে সক্ষম করে তোলেন।

RSpec.configure do |config|
  config.render_views
end

অথবা রেন্ডার_ভিউ ঘোষণাটি পৃথক গোষ্ঠী ব্যবহার করুন:

describe User do
  render_views
end

আপনি এই সম্পর্কে আরও পড়তে পারেন এখানে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.