Claude Code เป็นวงจร: มันแก้ไขไฟล์, รันคำสั่งในเทอร์มินัลของคุณ, อ่านผลลัพธ์, และตัดสินใจว่าจะทำอะไรต่อไป แล้วทำไมการทดสอบ API ของคุณถึงไม่อยู่ในวงจรนั้นล่ะ? พวกมันอยู่ใน Apidog หลัง GUI และจะทำงานเมื่อมีคนจำได้ที่จะคลิก เอเจนต์ของคุณไม่เคยแตะต้องพวกมันเลย
วิธีแก้คือบล็อกการตั้งค่าเดียว Apidog CLI เป็นแพ็คเกจ npm ชื่อ apidog-cli ซึ่งใช้รันสถานการณ์ทดสอบที่คุณสร้างใน Apidog โดยตรงจากเทอร์มินัล เมื่อติดตั้ง CLI และ Claude Code รู้ว่ามันมีอยู่แล้ว เอเจนต์ของคุณจะรันสถานการณ์ Apidog ในลักษณะเดียวกับการรันการทดสอบหน่วยของคุณ: เรียกใช้คำสั่ง, อ่านรหัสออก, แก้ไขโค้ดหากเป็นสีแดง
คู่มือนี้ครอบคลุมส่วนที่เฉพาะเจาะจงของ Claude Code ที่คู่มือการติดตั้งทั่วไปข้ามไป: บรรทัดที่แน่นอนสำหรับ CLAUDE.md ของคุณ, วิธีที่ Claude Code รัน apidog run ภายใต้โมเดลการอนุญาตของมัน, และวิธีอ่านผลลัพธ์ภายในวงจรการแก้ไข-ทดสอบ-แก้ไขของมันเอง
หากคุณยังไม่ได้ติดตั้ง CLI ให้ทำก่อน วิธีติดตั้ง Apidog CLI ด้วยเอเจนต์โค้ดดิ้ง AI จะแนะนำการติดตั้ง npm และการรันครั้งแรก โดยเอเจนต์จะเป็นผู้พิมพ์ บทความนี้สมมติว่า apidog --version แสดงตัวเลขและบัญชี Apidog ของคุณได้รับการยืนยันสิทธิ์แล้ว
Claude Code ที่กำลังพูดถึงนี้คืออะไร
นี่คือ Claude Code CLI ซึ่งเป็นเอเจนต์โค้ดดิ้งของ Anthropic ที่ทำงานในเทอร์มินัลของคุณ (หรือแอปเดสก์ท็อป) มันอ่านรีโพสิทอรีของคุณ, แก้ไขไฟล์, และรันคำสั่งเชลล์ โดยจะขออนุมัติตามโหมดการอนุญาตของคุณ มันไม่ใช่แอปแชท Claude และไม่ใช่การเรียก API ทั่วไป หากคุณรัน claude ในรีโพสิทอรีและได้รับเอเจนต์แบบโต้ตอบที่เสนอการแก้ไขและรันคำสั่ง คุณมาถูกที่แล้ว คำสั่งที่คุณเขียนสำหรับเทอร์มินัลจะอยู่ใน คำสั่งสแลชของ Claude Code และไฟล์กฎของมัน และไฟล์กฎนั้นคือที่ที่ Apidog CLI อยู่
ความแตกต่างนี้มีความสำคัญเพราะ Claude Code มีวิธีของตัวเองในการเรียนรู้กฎของโปรเจกต์ และกลไกนั้นเปลี่ยน "รันการทดสอบของฉัน" แบบครั้งเดียวให้กลายเป็นสิ่งที่ Claude สามารถทำได้ด้วยตัวเอง กลไกนั้นคือ CLAUDE.md
ขั้นตอนที่ 1: เพิ่มบล็อก Apidog ไปยัง CLAUDE.md
Claude Code อ่านไฟล์ CLAUDE.md เมื่อเริ่มต้นทุกเซสชัน นี่เป็นส่วนที่เทียบเท่าโดยตรงกับ AGENTS.md สำหรับ Codex; ในความเป็นจริง เอกสารของ Anthropic ระบุว่า Claude Code อ่าน CLAUDE.md ไม่ใช่ AGENTS.md และแนะนำให้นำเข้า AGENTS.md ที่มีอยู่ด้วย @AGENTS.md หากคุณเก็บไว้สำหรับเอเจนต์อื่น หากคุณตั้งค่า Apidog CLI ใน Codex แล้ว นี่คือแนวคิดเดียวกันแต่ใช้ชื่อไฟล์ต่างกัน
วางไฟล์ CLAUDE.md ที่ root ของรีโพสิทอรีของคุณ (Claude Code ยังยอมรับ ./.claude/CLAUDE.md และ ~/.claude/CLAUDE.md ทั่วโลกสำหรับการตั้งค่าเริ่มต้นส่วนบุคคล) Claude Code จะไล่ขึ้นไปตามโครงสร้างไดเรกทอรีจากที่คุณเปิดใช้งานและโหลดไฟล์ CLAUDE.md ทั้งหมดที่พบ ดังนั้นไฟล์เดียวที่ root ของรีโพสิทอรีจะเข้าถึงทุกเซสชัน เพิ่มบล็อกสั้นๆ ดังนี้:
## API testing with Apidog CLI
This project has Apidog test scenarios. To check the API, run:
`apidog run -t <scenario_id> -e <env_id> -r cli`
- Exit code 0 means every assertion passed. Non-zero means something failed; open the report and fix it before moving on.
- The machine is already authenticated via `apidog login`. Never add an `--access-token` flag and never put a token in this file.
- If a flag is unknown, run `apidog run --help` and use the exact flag from there.
นี่คือเหตุผลที่คุณเขียน CLI ลงใน CLAUDE.md แทนที่จะกล่าวถึงในแชท ID สถานการณ์ที่พิมพ์ลงในเซสชันจะหายไปเมื่อเซสชันนั้นสิ้นสุดลง ID ที่อยู่ใน CLAUDE.md จะอยู่ตรงนั้นสำหรับเพื่อนร่วมทีมทุกคนและทุกครั้งที่ Claude Code รันนับจากนี้ ไฟล์จะถูกโหลดทั้งหมดเมื่อเริ่มต้นและยังคงอยู่หลัง /compact ดังนั้นคำสั่งจะยังคงใช้งานได้ตลอดทั้งเซสชัน
ขั้นตอนที่ 2: รับคำสั่งจาก Apidog
<scenario_id> และ <env_id> ในบล็อกนั้นไม่ใช่ค่าที่คุณเดา เปิดสถานการณ์ทดสอบของคุณใน Apidog ไปที่แท็บ CI/CD และคัดลอกคำสั่ง apidog run ... ที่สร้างขึ้น มันมี ID สถานการณ์จริง, ID สภาพแวดล้อม, และ -r cli reporter ที่กรอกไว้แล้ว วาง ID เหล่านั้นลงในบล็อก CLAUDE.md ของคุณ
reporter -r cli จะพิมพ์ผลลัพธ์ทีละขั้นตอนและสรุปในเทอร์มินัล ซึ่งเป็นเอาต์พุตที่ Claude Code อ่านเพื่อตัดสินใจขั้นตอนต่อไป สำหรับรายละเอียดทั้งหมดของแต่ละแฟล็ก ดู คู่มือ Apidog CLI ฉบับสมบูรณ์ และ การอ้างอิงคำสั่ง apidog run
ขั้นตอนที่ 3: ให้ Claude Code รันการทดสอบ
เมื่อบล็อกอยู่ในตำแหน่ง ให้เริ่มต้น Claude Code ในรีโพสิทอรีของคุณ:
claude
Claude Code โหลด CLAUDE.md เมื่อเริ่มต้น ดังนั้นมันจึงรู้แล้วว่า CLI อยู่ที่นั่น ทำการเปลี่ยนแปลงที่กระทบ API ของคุณ หรือแค่ขอให้มันรันการตรวจสอบ Claude Code จะออกคำสั่ง apidog run จาก CLAUDE.md ของคุณ
ที่นี่โมเดลการอนุญาตมีความสำคัญ ในโหมดเริ่มต้น Claude Code จะขออนุมัติก่อนที่จะรันคำสั่งเชลล์ที่มันยังไม่เคยเห็นอนุมัติ อนุมัติคำสั่ง apidog run เมื่อมันขึ้นพร้อมท์ หากต้องการหยุดถูกถามสำหรับคำสั่งที่คุณเชื่อถือ ให้เพิ่มกฎการอนุญาตเพื่อให้ CLI ทำงานโดยไม่มีพร้อมท์: รัน /permissions ภายในเซสชัน หรือเพิ่มกฎอนุญาตสำหรับ Bash(apidog run *) ใน .claude/settings.json สถานการณ์ทดสอบแบบอ่านอย่างเดียวกับ staging เป็นคำสั่งที่ปลอดภัยที่จะอนุญาต สำหรับการรันแบบอัตโนมัติมี --dangerously-skip-permissions ซึ่งข้ามพร้อมท์ทั้งหมด; เก็บสิ่งนั้นไว้สำหรับ CI ไม่ใช่สำหรับใช้งานประจำวันของคุณ
คุณต้องการเห็นการรันกำลังดำเนินการและ Claude Code รายงานกลับมาทั้งสรุปและรหัสออก ไม่ใช่แค่ประโยคที่อ้างว่าสำเร็จ
ขั้นตอนที่ 4: อ่านรายงานภายใน Claude Code
เมื่อการรันไม่สำเร็จ รายงานจะมีคำตอบ ด้วย -r cli Claude Code จะได้รับรายละเอียดที่อ่านได้ในเทอร์มินัล: แต่ละคำขอ, แต่ละ assertion, และอันไหนล้มเหลวด้วยค่าที่คาดหวังเทียบกับค่าจริง assertion ที่ล้มเหลวจะระบุฟิลด์หรือรหัสสถานะที่แน่นอน ซึ่งโดยปกติแล้วเพียงพอสำหรับ Claude Code ที่จะหาทางแก้ไข
สำหรับรายงานที่คุณสามารถเปิดในเบราว์เซอร์หรือส่งให้เพื่อนร่วมทีม ให้เพิ่ม HTML reporter:
apidog run -t <scenario_id> -e <env_id> -r cli,html
reporter html จะเขียนไฟล์ที่รวมอยู่ในตัวเองไปยัง ./apidog-reports เก็บ cli ไว้ในรายการเพื่อให้ Claude Code ยังคงได้รับเอาต์พุตในบรรทัดที่มันอ่านเพื่อตัดสินใจขั้นตอนต่อไป สำหรับรูปแบบ JUnit ที่แดชบอร์ด CI แยกวิเคราะห์และ reporter อื่นๆ ดู รายงานการทดสอบ Apidog CLI
Claude Code ทดสอบภายในวงจรของตัวเอง
ประเด็นคือสิ่งที่เกิดขึ้นเมื่อคุณหยุดถามและ Claude Code รันสถานการณ์ด้วยตัวเองเพราะ CLAUDE.md บอกให้ทำ
ลองนึกภาพ Claude Code แก้ไข handler ที่สร้างการตอบสนองการเช็คเอาต์ วงจรของมันเปลี่ยนไป: มันแก้ไขโค้ด จากนั้น แทนที่จะประกาศชัยชนะ มันจะรันสถานการณ์ Apidog ของคุณกับ staging, อ่านรหัสออก, และดำเนินการตามนั้น หากเป็นสีเขียว มันจะดำเนินการต่อไป หากเป็นสีแดง มันจะเปิดรายงาน, อ่านว่า assertion ใดล้มเหลว (รหัสสถานะ, ฟิลด์ที่หายไป, ค่าที่ไม่ถูกต้อง), ลองแก้ไข, และรันใหม่ การทดสอบ API กลายเป็นส่วนหนึ่งของวงจรการแก้ไข-ทดสอบ-แก้ไขเดียวกับที่ Claude Code ใช้รันการทดสอบหน่วยของคุณอยู่แล้ว คุณเขียนคำสั่งเดียวและ Claude ก็รวมคำสั่งนั้นเข้ากับวิธีการทำงานของมันแล้ว
นี่คือโมเดลการมอบหมาย-แล้ว-ยืนยัน ที่ทำให้เวิร์กโฟลว์ของเอเจนต์ปลอดภัย Claude Code รันคำสั่งและอ่านผลลัพธ์; คุณยังคงสร้างสถานการณ์ด้วยภาพใน Apidog และตรวจสอบว่าเอเจนต์อ่านรหัสออกอย่างซื่อสัตย์ สำหรับรูปแบบที่กว้างขึ้น ดู วิธีใช้เอเจนต์ AI สำหรับการทดสอบ API และ ชุดทดสอบ Apidog AI
ตรวจสอบว่า Claude Code กำลังรัน CLI จริงๆ
เอเจนต์รายงานความสำเร็จที่พวกเขาไม่ได้ทำ และ Claude Code ก็ไม่มีข้อยกเว้น การตรวจสอบสามประการ เรียงตามลำดับความถี่ที่พบปัญหา
อย่างแรก, ยืนยันว่าคำสั่งถูกรันจริงๆ Claude Code แสดงคำสั่งที่รันและเอาต์พุตของมันในบรรทัด มองหาบรรทัด apidog run ... ตัวอักษรและผลลัพธ์ภายใต้มัน หาก Claude บอกว่ามันรันการทดสอบแต่คุณไม่เห็นคำสั่ง นั่นหมายความว่ามันสรุปสิ่งที่มันไม่เคยทำ ขอให้มันรันอีกครั้งและแสดงเอาต์พุตดิบ
อย่างที่สอง, ยืนยันรหัสออก ซึ่งเป็นสิ่งสำคัญ ถามมันโดยตรงว่า: “รหัสออกของคำสั่ง apidog run นั้นคืออะไร?” apidog run จะออก 0 เมื่อทุก assertion ผ่านและไม่เป็นศูนย์เมื่อมีสิ่งใดล้มเหลว พฤติกรรมเดียวนี้ทำให้ Claude Code หรือ pipeline สามารถถือว่าการรันนั้นเป็นเกตที่สะอาด เมื่อข้อความของ Claude ระบุว่า “tests passed” แต่รหัสออกไม่เป็นศูนย์ รหัสออกนั้นถูกต้อง
อย่างที่สาม, ยืนยันว่ามันใช้สถานการณ์จริง หากการรันล้มเหลวด้วยข้อความ “scenario not found” Claude อาจสร้างหรือจำ ID ผิด ตรวจสอบค่า -t และ -e อีกครั้งกับ CLAUDE.md และคำสั่งที่ Apidog สร้างขึ้นในแท็บ CI/CD ID ใน CLAUDE.md คือความจริง
ทางเลือก: เชื่อมต่อเซิร์ฟเวอร์ Apidog MCP
การรัน apidog run จาก CLAUDE.md ครอบคลุมสิ่งที่คุณต้องการส่วนใหญ่ หากต้องการไปอีกขั้น ให้เชื่อมต่อเซิร์ฟเวอร์ MCP เพื่อให้ Claude Code สามารถอ่านสเปค API ของคุณในขณะที่มันเขียนโค้ด ไม่ใช่แค่ทดสอบหลังจากนั้น
Claude Code รองรับ Model Context Protocol คุณเพิ่มเซิร์ฟเวอร์ด้วย claude mcp add ... หรือโดยการคอมมิตไฟล์ .mcp.json ที่ root ของโปรเจกต์ของคุณและเลือก --scope project เพื่อให้ทั้งทีมได้รับมัน เซิร์ฟเวอร์ Apidog MCP จะเปิดเผยข้อมูลจำเพาะ API ของคุณผ่าน MCP ดังนั้น Claude จะอ่านสคีมาของคุณขณะที่มันเขียนโค้ด ลองคิดว่าเป็นการแบ่งงาน: CLI รันการทดสอบ, MCP ป้อนข้อมูลจำเพาะให้กับเอเจนต์
เมื่อ Claude Code ทำผิดพลาด
ความล้มเหลวบางอย่างที่มักเกิดขึ้นบ่อยครั้งในระหว่างการตั้งค่า
มันเพิกเฉยบล็อก CLAUDE.md หาก Claude รันคำสั่งทั่วไปหรือไม่รันเลย บล็อกอาจไม่ถูกโหลด ยืนยันว่าไฟล์ชื่อ CLAUDE.md ตรงตามที่กำหนดและอยู่ใน root ของรีโพสิทอรีของคุณหรือไดเรกทอรีแม่ของไดเรกทอรีปัจจุบันของคุณ รัน /memory ภายในเซสชันเพื่อแสดงรายการไฟล์ที่ Claude โหลดจริง หากไฟล์ของคุณไม่อยู่ที่นั่น Claude จะมองไม่เห็นมัน การรีสตาร์ทเซสชันจะบังคับให้อ่านใหม่
มันส่งโทเค็นการเข้าถึงไปอยู่ดี หาก Claude พยายามเพิ่ม --access-token แสดงว่ามันเดาจากตัวอย่างสาธารณะ บล็อกได้บอกมันแล้วว่าไม่ต้องทำ เพราะเครื่องได้รับการยืนยันสิทธิ์ผ่าน apidog login ย้ำบรรทัดนั้น และอย่าใส่โทเค็นจริงใน CLAUDE.md สำหรับวิธีการยืนยันสิทธิ์ของเครื่องเพียงครั้งเดียว ดู การยืนยันสิทธิ์ Apidog CLI
มันสร้างแฟล็กขึ้นมาเอง ข้อผิดพลาด “unknown option” หมายความว่า Claude เดาแฟล็กที่เวอร์ชันของคุณไม่มี บอกให้มันรัน apidog run --help และคัดลอกแฟล็กที่แน่นอนจากที่นั่น ซึ่งถูกต้องเสมอสำหรับเวอร์ชันที่ติดตั้งของคุณ
มันรายงานว่าผ่านในการรันที่ล้มเหลว นี่คือสิ่งที่แพงที่สุด และเป็นเหตุผลที่กฎรหัสออกอยู่ใน CLAUDE.md ของคุณและขั้นตอนการตรวจสอบของคุณ เมื่อสรุปและรหัสออกไม่ตรงกัน รหัสออกคือสิ่งที่ถูกต้อง
จากเอเจนต์รายวันสู่วงจรที่ผ่านการทดสอบ
นั่นคือการตั้งค่า ติดตั้ง apidog-cli เพียงครั้งเดียวตาม คู่มือการติดตั้ง เพิ่มบล็อก Apidog สั้นๆ ไปยัง CLAUDE.md ในรีโพสิทอรีของคุณ และ Claude Code จะรู้วิธีรันการทดสอบ API ของคุณและอ่านผลลัพธ์ภายในวงจรเดียวกับที่มันใช้อยู่แล้วในการแก้ไขโค้ด Endpoint ที่เสียจะถูกตรวจพบในขณะที่ Claude ยังคงทำงานกับการเปลี่ยนแปลง ไม่ใช่หลังจากที่มันถูกส่งออกไป
การทดสอบที่อยู่เบื้องหลัง GUI จะทำงานเมื่อมนุษย์คลิก; คำสั่งบรรทัดเดียวจะทำงานเมื่อ Claude ตัดสินใจ คุณยังคงสร้างสถานการณ์ด้วยภาพใน Apidog และเอเจนต์ของคุณจะรันมันในที่ที่คุณไม่ได้ดู ดาวน์โหลด Apidog สร้างสถานการณ์หนึ่ง, วางคำสั่ง apidog run ของมันลงใน CLAUDE.md, และดู Claude เลือกมันในการเปลี่ยนแปลงครั้งถัดไป เมื่อคุณพร้อมที่จะรันคำสั่งเดียวกันใน pipeline โดยไม่มี Claude อยู่ Apidog CLI ใน GitHub Actions ครอบคลุมเรื่อง secrets, reporters, และ exit-code gating
