ฉันกำลังเขียน Ruby Gem โดยใช้ Commander ซึ่งใช้เทมเพลต erb และ $terminal.color
สำหรับเอาต์พุตบางส่วน เมื่อเขียนการทดสอบใน RSpec (โดยใช้ การทดสอบ CLI) ฉันต้องการให้ผ่านตัวเลือกได้ คำสั่งของฉันเพื่อป้องกันการปรับสีเพื่อให้การทดสอบของฉันสามารถจับคู่สตริงแบบง่ายแทนที่จะต้องรวมการจัดรูปแบบในการเปรียบเทียบสตริงของฉัน
ขณะนี้ฉันกำลังใช้:
execute_script('mycommand arg1')
expect(last_execution.stdout).to include("Expected Colorized Output")
แต่สมมติว่าคำว่า "Colorized" เป็นตัวหนา การทดสอบนี้จะล้มเหลวเนื่องจากมีอักขระอื่นล้อมรอบ ดังนั้นฉันจึงต้องเขียนการทดสอบแบบนี้
execute_script('mycommand arg1')
expect(last_execution.stdout).to include("Expected")
expect(last_execution.stdout).to include("Colorized")
expect(last_execution.stdout).to include("Output")
ฉันต้องการหลีกเลี่ยงการแยกการทดสอบด้วยวิธีนี้ - มีวิธีใดบ้างที่ฉันจะผ่านตัวเลือกภายในการโทร execute_script
ในการทดสอบของฉัน หรือกำหนดค่า RSpec ให้ลบการจัดรูปแบบสำหรับการทดสอบ
สตริงตัวอย่างที่ RSpec เห็น
# successfully is bolded here
Command ran \e[1m\e[32msuccessfully\e[0m
ที่ฉันอยากจะวิ่งฝ่าฟันไปได้
expect(last_execution.stdout).to include("Command ran successfully")
include("Expected Colorized Output")
ด้วยการใส่สีเช่นinclude(bold(red("Expected Colorized Output")))
--- ที่สร้างไวยากรณ์นี้ขึ้นมาอย่างแท้จริง แต่บางทีบางอย่างในบรรทัดเหล่านั้นอาจใช้ได้ผลใช่ไหม - person jefflunt   schedule 04.08.2016last_execution.stdout
ไปยังคอนโซลเพื่อให้คุณ (และเรา) เห็นว่า rspec เห็นอะไร? - person jefflunt   schedule 04.08.2016successfully
ได้ เนื่องจากนั่นระบุสถานะ และเป็นสตริงที่ไม่ขาดตอนภายในการปรับสี - person jefflunt   schedule 04.08.2016