คำถามติดแท็ก rspec

RSpec เป็นเฟรมเวิร์กการพัฒนาที่ขับเคลื่อนด้วยพฤติกรรม (BDD) สำหรับภาษาโปรแกรม Ruby ซึ่งได้รับแรงบันดาลใจจาก JBehave มันมีเฟรมเวิร์กการเยาะเย้ยแบบบูรณาการโดยอิงจาก JMock กรอบงานถือได้ว่าเป็นภาษาเฉพาะโดเมน (DSL) และคล้ายกับข้อกำหนดภาษาธรรมชาติ

10
เมื่อใดที่จะใช้ RSpec let ()
ฉันมักจะใช้ก่อนบล็อกเพื่อตั้งค่าตัวแปรอินสแตนซ์ จากนั้นฉันก็ใช้ตัวแปรเหล่านั้นกับตัวอย่างของฉัน let()ฉันเพิ่งมาถึง ตามเอกสาร RSpec มันถูกใช้เพื่อ ... เพื่อกำหนดวิธีใช้ตัวช่วยจำ ค่าจะถูกแคชระหว่างการโทรหลายครั้งในตัวอย่างเดียวกัน แต่จะไม่ข้ามตัวอย่าง สิ่งนี้แตกต่างจากการใช้ตัวแปรอินสแตนซ์ในบล็อกก่อนหน้าอย่างไร และเมื่อใดที่คุณควรใช้let()vs before()?
448 ruby  rspec 

16
วิธีการรันการทดสอบ RSpec เดียว?
ฉันมีไฟล์ต่อไปนี้: /spec/controllers/groups_controller_spec.rb ฉันจะใช้คำสั่งอะไรในเทอร์มินัลเพื่อรันเฉพาะข้อมูลจำเพาะนั้นและในไดเรกทอรีใดที่ฉันจะเรียกใช้คำสั่ง ไฟล์อัญมณีของฉัน: # Test ENVIRONMENT GEMS group :development, :test do gem "autotest" gem "rspec-rails", "~> 2.4" gem "cucumber-rails", ">=0.3.2" gem "webrat", ">=0.7.2" gem 'factory_girl_rails' gem 'email_spec' end ไฟล์ Spec: require 'spec_helper' describe GroupsController do include Devise::TestHelpers describe "GET yourgroups" do it "should be successful and return 3 items" …

14
คุณจะเรียกใช้ไฟล์ทดสอบ / ข้อมูลจำเพาะเดียวใน RSpec ได้อย่างไร
ฉันต้องการให้สามารถทดสอบไฟล์ข้อมูลจำเพาะเดียวได้เช่นไฟล์เดียวที่ฉันกำลังแก้ไข rake specดำเนินการรายละเอียดทั้งหมด โครงการของฉันไม่ใช่โครงการ Rails ดังนั้นrake spec:docใช้งานไม่ได้ ไม่ทราบว่าเรื่องนี้ แต่นี่คือโครงสร้างไดเรกทอรีของฉัน ./Rakefile ./lib ./lib/cushion.rb ./lib/cushion ./lib/cushion/doc.rb ./lib/cushion/db.rb ./spec ./spec/spec.opts ./spec/spec_helper.rb ./spec/db_spec.rb
282 ruby  testing  rspec 

6
Rspec:“ array.should == another_array” แต่ไม่ต้องกังวลเกี่ยวกับการสั่งซื้อ
ฉันมักจะต้องการเปรียบเทียบอาร์เรย์และตรวจสอบให้แน่ใจว่าพวกเขามีองค์ประกอบเดียวกันในลำดับใด ๆ มีวิธีรัดกุมในการทำเช่นนี้ใน RSpec? นี่คือวิธีการที่ไม่เป็นที่ยอมรับ: #to_set ตัวอย่างเช่น: expect(array.to_set).to eq another_array.to_set หรือ array.to_set.should == another_array.to_set สิ่งนี้จะล้มเหลวเมื่ออาร์เรย์มีรายการที่ซ้ำกัน #sort ตัวอย่างเช่น: expect(array.sort).to eq another_array.sort หรือ array.sort.should == another_array.sort สิ่งนี้จะล้มเหลวเมื่อองค์ประกอบอาร์เรย์ไม่ได้ใช้งาน #<=>
235 ruby  testing  rspec 

8
การทดสอบ iOS / รายละเอียด TDD / BDD และการทดสอบการรวมและการยอมรับ
ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ เทคโนโลยีที่ดีที่สุดที่ใช้ในการพัฒนาพฤติกรรมที่ขับเคลื่อนบน iPhone คืออะไร? และโครงการตัวอย่างโอเพ่นซอร์สบางโครงการที่แสดงให้เห็นถึงการใช้เสียงของเทคโนโลยีเหล่านี้คืออะไร นี่คือตัวเลือกที่ฉันพบ: การทดสอบหน่วย ทดสอบ ::สไตล์หน่วย OCUnit / SenTestingKitที่อธิบายไว้ในคู่มือการพัฒนา iOS: การประยุกต์ใช้งานหน่วยทดสอบและอื่น ๆ ที่อ้างอิง OCUnit ตัวอย่าง: iPhoneUnitTests , Three20 จับ GHUnit Google Toolbox สำหรับ Mac: การทดสอบหน่วย iPhone สไตล์RSpec กีวี่ (ซึ่งมาพร้อมกับการเยาะเย้ย & ความคาดหวัง) ต้นซีดาร์ จัสมินกับUI Automationดังแสดงในข้อกำหนดการทดสอบการยอมรับ iOS ที่คล่องแคล่ว การทดสอบการยอมรับ สไตล์ซีลีเนียม UI Automation (ทำงานบนอุปกรณ์) คู่มือเครื่องมืออัตโนมัติ UI เอกสารอ้างอิง …


15
ไม่มีโฮสต์ที่จะลิงก์ไปยัง! โปรดระบุ: พารามิเตอร์โฮสต์หรือตั้ง default_url_options [: host]
ฉัน googling ประมาณ 90 นาทีแล้วและยังไม่มีคำตอบสำหรับเรื่องนี้ ฉันจะตั้งdefault_url_optionsที่ไหน ฉันได้ตั้งค่าไว้config.action_mailer.default_url_optionsเพื่อแก้ไขข้อผิดพลาดนี้ที่อื่น แต่ตอนนี้ฉันได้รับข้อผิดพลาดนี้เมื่อพยายามใช้ตัวช่วย URL ภายในข้อกำหนด RSpec ฉันไม่มีความคิดว่าจะตั้งค่า default_url_options Failure/Error: listing_url(listing).should match(/\/\d+-\w+$/) RuntimeError: Missing host to link to! Please provide :host parameter or set default_url_options[:host] # ./spec/routing/listing_routing_spec.rb:9:in `block (3 levels) in <top (required)>' รหัสนี้ไม่มีส่วนเกี่ยวข้องกับอีเมล / ActionMailer มันเพิ่งเกิดขึ้นกับ URL แทนที่จะเป็นเส้นทาง ความคิดใด ๆ

14
การทดสอบโมดูลใน rspec
อะไรคือแนวปฏิบัติที่ดีที่สุดสำหรับโมดูลการทดสอบใน rspec ฉันมีโมดูลบางตัวที่รวมอยู่ในรุ่นไม่กี่รุ่นและตอนนี้ฉันมีการทดสอบซ้ำกันสำหรับแต่ละรุ่น (มีความแตกต่างเล็กน้อย) มีวิธีที่จะทำให้มันแห้งหรือไม่?
175 ruby  unit-testing  rspec 


6
ฉันจะกำหนดค่า RSpec ทั่วโลกให้เปิดตัวเลือก '--color' และ '--format specdoc' ได้อย่างไร
ฉันจะตั้งค่าส่วนกลางสำหรับ RSpec ใน Ubuntu ได้อย่างไร โดยเฉพาะดังนั้น --color และ - รูปแบบ specdoc จะยังคงเปิดอยู่ตลอดโครงการของฉัน (เช่นทุกครั้งที่ฉันเรียกใช้ rspec ทุกที่)

4
ตั้งค่า RSpec เพื่อทดสอบอัญมณี (ไม่ใช่ Rails)
มันค่อนข้างง่ายด้วยตัวกำเนิดที่เพิ่มของ rspec-rails เพื่อติดตั้ง RSpec สำหรับทดสอบแอพพลิเคชั่น Rails แต่วิธีการเกี่ยวกับการเพิ่ม RSpec สำหรับการทดสอบอัญมณีในการพัฒนา? ฉันไม่ได้ใช้งานเครื่องเพชรพลอยหรือเครื่องมือเช่นนั้น ฉันเพิ่งใช้ Bundler ( bundle gem my_gem) เพื่อตั้งค่าโครงสร้างสำหรับอัญมณีใหม่และแก้ไข * .gemspec ด้วยตนเอง ฉันยังเพิ่มs.add_development_dependency "rspec", ">= 2.0.0"การ gemspec bundle installและไม่ มีกวดวิชาที่ดีจะทำอย่างไรต่อไปเพื่อให้ RSpec ทำงานได้หรือไม่
154 testing  rubygems  rspec  gem  rspec2 

5
ฉันจะบอก Rails ให้ใช้ RSpec แทนการทดสอบเมื่อสร้างแอพ Rails ใหม่ได้อย่างไร
ฉันได้test-unitรับการติดตั้งและrspecการติดตั้ง (พร้อมกับ-core, -expectations, -mocksและ-railsรุ่น 2.6.x) เมื่อฉันเรียกใช้คำสั่งrails new fooจะใช้ในการสร้างแฟ้มการทดสอบต้นขั้วแทนtest-unitrspec มีตัวเลือกที่ฉันสามารถบอกทางรถไฟให้ใช้ rspec เพื่อสร้างการทดสอบแทนได้หรือไม่?

13
จะตรวจสอบการตอบสนอง JSON โดยใช้ RSpec ได้อย่างไร?
ฉันมีรหัสต่อไปนี้ในตัวควบคุมของฉัน: format.json { render :json => { :flashcard => @flashcard, :lesson => @lesson, :success => true } ในการทดสอบคอนโทรลเลอร์ RSpec ของฉันฉันต้องการตรวจสอบว่าสถานการณ์บางอย่างได้รับการตอบสนอง json ที่ประสบความสำเร็จดังนั้นฉันจึงมีบรรทัดต่อไปนี้: controller.should_receive(:render).with(hash_including(:success => true)) แม้ว่าเมื่อฉันเรียกใช้การทดสอบของฉันฉันได้รับข้อผิดพลาดต่อไปนี้: Failure/Error: controller.should_receive(:render).with(hash_including(:success => false)) (#<AnnoController:0x00000002de0560>).render(hash_including(:success=>false)) expected: 1 time received: 0 times ฉันตรวจสอบคำตอบอย่างไม่ถูกต้องหรือไม่?

4
ฉันจะตรวจสอบว่าเขตข้อมูลฟอร์มได้รับการเติมล่วงหน้าอย่างถูกต้องโดยใช้ capybara ได้อย่างไร
ฉันมีฟิลด์ที่มีป้ายกำกับที่เหมาะสมซึ่งฉันสามารถเติมด้วย capybara ได้โดยไม่มีปัญหา: fill_in 'Your name', with: 'John' ฉันต้องการตรวจสอบค่าที่มีอยู่ก่อนเติมและไม่สามารถหาได้ ถ้าฉันเพิ่มหลังจากfill_inบรรทัดต่อไปนี้: find_field('Your name').should have_content('John') การทดสอบนั้นล้มเหลวแม้ว่าการเติมจะทำงานก่อนหน้านี้อย่างที่ฉันตรวจสอบแล้วโดยการบันทึกหน้า ฉันพลาดอะไรไป
145 forms  rspec  capybara 

5
วิธีรับพา ธ ปัจจุบันด้วยสตริงการสืบค้นโดยใช้ Capybara
URL ของหน้าเป็นสิ่ง/people?search=name ที่ฉันต้องการในขณะที่ฉันใช้current_pathวิธีการของ capybara ที่ส่งคืน/peopleเท่านั้น current_path.should == people_path(:search => 'name') แต่มันล้มเหลวในการพูด expected: "/people?search=name" got: "/people" เราจะทำให้มันผ่านไปได้อย่างไร มีวิธีการทำเช่นนี้หรือไม่?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.