ฉันมีไฟล์ tests.js
ที่มีคำจำกัดความ test(...)
บางส่วน ฉันต้องการนำการทดสอบเหล่านี้กลับมาใช้ซ้ำกับฟิกซ์เจอร์หลายตัว โดยไม่จำเป็นต้องทำการแก้ไขโค้ดต้นฉบับใดๆ
ดังนั้นฉันจึงเขียน main.js
ที่กำหนดฟิกซ์เจอร์และนำเข้า tests.js
ดังนั้นจึง "ประกอบ" ชุดทดสอบ (ในกรณีที่ใช้งานได้ ฉันสามารถเขียนไฟล์ไดรเวอร์ที่แตกต่างกันโดยมีการติดตั้งที่แตกต่างกัน โดยนำเข้า tests.js
เดียวกันจากภายในแต่ละไฟล์)
อย่างไรก็ตาม ฉันได้รับข้อผิดพลาด test is not defined
เมื่อพยายามดำเนินการ main.js
:
C:\Windows\Temp\dummy>testcafe chrome main.js --debug-on-fail
ERROR Cannot prepare tests due to an error.
ReferenceError: test is not defined
at Object.<anonymous> (C:\Windows\Temp\dummy\tests.js:1:1)
at Object.<anonymous> (C:\Windows\Temp\dummy\main.js:7:1)
Type "testcafe -h" for help.
ตัวอย่างขั้นต่ำ:
// tests.js
test('wait', async t => {
await t.wait(1);
});
// main.js
fixture `here goes the name`
.page("http://localhost:3000")
.beforeEach(async t => {
// do stuff
});
import "./tests";
/*
trick testcafe to scan the file;
based on https://github.com/DevExpress/testcafe/issues/2889#issuecomment-423859785
test();
*/
ฉันได้ลองแล้ว:
- ลบแฮ็คความคิดเห็นบล็อก (
test();
) - ซึ่งให้ERROR No tests to run. Either the test files contain no tests or the filter function is too restrictive.
- ย้ายการนำเข้า
tests.js
ไปด้านบน - ยังคงให้test is not defined
- การนำเข้า
testcafe
จากภายในmain.js
และtests.js
- ข้อผิดพลาดเดียวกัน
มีวิธีทำให้ฟังก์ชัน test
"มองเห็น" ไปยังไฟล์อื่นที่นำเข้าโดยไฟล์จุดเข้าใช้งาน testcafe หรือไม่ หรือฉันจะต้องแก้ไขไฟล์ tests.js
ของฉันจริงๆ เพื่อให้ทำงานได้ อาจโดยการเพิ่มคำจำกัดความการทดสอบลงในวิธีการและเรียกใช้จากภายใน main.js
- เช่นเดียวกับในตัวอย่างโค้ดต้นฉบับของ ปัญหานี้?