ดังนั้นฉันมีโมดูลการตรวจสอบสิทธิ์ที่ฉันเขียนเมื่อไม่นานมานี้ ตอนนี้ฉันเห็นข้อผิดพลาดในทางของฉันและเขียนการทดสอบหน่วยสำหรับมัน ในขณะที่เขียนการทดสอบหน่วยฉันมีช่วงเวลาที่ยากลำบากในการหาชื่อที่ดีและพื้นที่ที่ดีสำหรับการทดสอบ ตัวอย่างเช่นฉันมีสิ่งที่ชอบ
- RequiresLogin_should_redirect_when_not_logged_in
- RequiresLogin_should_pass_through_when_logged_in
- Login_should_work_when_given_proper_credentials
โดยส่วนตัวฉันคิดว่ามันน่าเกลียดนิดหน่อยถึงแม้ว่ามันจะดูเหมือน "เหมาะสม" ก็ตาม ฉันยังมีปัญหาในการแยกความแตกต่างระหว่างการทดสอบโดยการสแกนพวกเขา (ฉันต้องอ่านชื่อวิธีการอย่างน้อยสองครั้งเพื่อทราบว่าล้มเหลวเพียงใด)
ดังนั้นฉันคิดว่าอาจจะแทนที่จะเขียนแบบทดสอบที่ทดสอบการทำงานล้วนๆอาจจะเขียนชุดการทดสอบที่ครอบคลุมสถานการณ์
ตัวอย่างเช่นนี่คือส่วนทดสอบที่ฉันสร้างขึ้นด้วย:
public class Authentication_Bill
{
public void Bill_has_no_account()
{ //assert username "bill" not in UserStore
}
public void Bill_attempts_to_post_comment_but_is_redirected_to_login()
{ //Calls RequiredLogin and should redirect to login page
}
public void Bill_creates_account()
{ //pretend the login page doubled as registration and he made an account. Add the account here
}
public void Bill_logs_in_with_new_account()
{ //Login("bill", "password"). Assert not redirected to login page
}
public void Bill_can_now_post_comment()
{ //Calls RequiredLogin, but should not kill request or redirect to login page
}
}
นี่เป็นรูปแบบการได้ยินหรือไม่? ฉันเคยเห็นเรื่องราวการยอมรับและสิ่งต่าง ๆ แต่มันแตกต่างกันโดยพื้นฐาน ข้อแตกต่างที่สำคัญคือฉันกำลังคิดกับสถานการณ์เพื่อ "บังคับ" การทดสอบ แทนที่จะลองด้วยตนเองเพื่อหาการโต้ตอบที่เป็นไปได้ที่ฉันจะต้องทดสอบ นอกจากนี้ฉันรู้ว่าสิ่งนี้ส่งเสริมการทดสอบหน่วยที่ไม่ทดสอบวิธีการและชั้นเรียนอย่างแน่นอน ฉันคิดว่ามันโอเคนะ นอกจากนี้ฉันทราบว่านี่จะทำให้เกิดปัญหาอย่างน้อยกรอบการทดสอบบางอย่างเนื่องจากพวกเขามักจะคิดว่าการทดสอบนั้นเป็นอิสระจากกันและลำดับไม่สำคัญ (ในกรณีนี้)
อย่างไรก็ตามนี่เป็นรูปแบบที่แนะนำหรือไม่? หรือนี่จะเหมาะอย่างยิ่งสำหรับการทดสอบการรวมระบบของ API แทนที่จะเป็นการทดสอบแบบ "หน่วย" หรือไม่? นี่เป็นเพียงโครงการส่วนตัวดังนั้นฉันจึงเปิดให้มีการทดลองที่อาจหรืออาจไม่เป็นไปด้วยดี
_test
ต่อท้ายและใช้ความคิดเห็นเพื่อบันทึกสิ่งที่ฉันคาดหวัง หากเป็นโครงการส่วนตัวให้ค้นหาสไตล์ที่คุณรู้สึกสะดวกสบายและยึดติดกับสิ่งนั้น