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

Jest เป็นเฟรมเวิร์กการทดสอบหน่วย JavaScript ที่สร้างโดย Facebook โดยใช้ Jasmine และให้การสร้างจำลองอัตโนมัติและสภาพแวดล้อม jsdom มักใช้ในการทดสอบส่วนประกอบของปฏิกิริยา

15
ฉันจะทดสอบไฟล์เดียวโดยใช้ Jest ได้อย่างไร
ฉันสามารถทดสอบหลายไฟล์โดยใช้ Jest แต่ฉันไม่สามารถหาวิธีทดสอบไฟล์เดียวได้ ฉันมี: วิ่ง npm install jest-cli --save-dev อัปเดตpackage.json: `{... " สคริปต์ ": {" ทดสอบ ":" ตลก "} ... } เขียนจำนวนการทดสอบ การnpm testทำงานได้ตามที่คาดไว้ (ขณะนี้ทดสอบ 14 ครั้ง) ฉันจะทดสอบไฟล์เดียวเช่นทดสอบได้app/foo/__tests__/bar.spec.jsอย่างไร ฉันได้ลองเรียกใช้npm test app/foo/__tests__/bar.spec.js(จากรูทโปรเจ็กต์) แต่ฉันได้รับข้อผิดพลาดต่อไปนี้: npm ERR! Error: ENOENT, open '<path to project>/node_modules/app/foo/__tests__/bar.spec.js/package.json' ขอบคุณ
359 node.js  jestjs 

13
ฉันจะรันการทดสอบเดี่ยวโดยใช้ Jest ได้อย่างไร
ฉันมีการทดสอบ 'ทำงานกับเด็กที่ซ้อนกัน' ภายในไฟล์ fix-order-test.js การรันด้านล่างจะเป็นการทดสอบทั้งหมดในไฟล์ jest fix-order-test ฉันจะรันการทดสอบเพียงครั้งเดียวได้อย่างไร ด้านล่างไม่ทำงานตามที่ค้นหาไฟล์ของ regex ที่ระบุ jest 'works with nested children'
356 jestjs 

7
ฉันจะจำลองการนำเข้าโมดูล ES6 โดยใช้ Jest ได้อย่างไร
ฉันเริ่มคิดว่ามันเป็นไปไม่ได้ แต่ฉันต้องการถามต่อไป ฉันต้องการทดสอบว่าหนึ่งในโมดูล ES6 ของฉันเรียกโมดูล ES6 อื่นด้วยวิธีเฉพาะ ด้วยจัสมินนี่เป็นเรื่องง่ายสุด ๆ - รหัสแอพ: // myModule.js import dependency from './dependency'; export default (x) => { dependency.doSomething(x * 2); } และรหัสทดสอบ: //myModule-test.js import myModule from '../myModule'; import dependency from '../dependency'; describe('myModule', () => { it('calls the dependency with double the input', () => { …

6
ความแตกต่างระหว่าง 'มัน' และ 'ทดสอบ' อย่างสนุกสนานคืออะไร?
ฉันมีการทดสอบสองครั้งในกลุ่มการทดสอบของฉัน หนึ่งใช้มันอีกหนึ่งใช้ทดสอบและพวกเขาดูเหมือนจะทำงานคล้ายกันมาก ความแตกต่างระหว่างพวกเขาคืออะไร? describe('updateAll', () => { it('no force', () => { return updateAll(TableName, ["fileName"], {compandId: "test"}) .then(updatedItems => { let undefinedCount = 0; for (let item of updatedItems) { undefinedCount += item === undefined ? 1 : 0; } // console.log("result", result); expect(undefinedCount).toBe(updatedItems.length); }) }); test('force update', () => …

9
วิธีใช้ ESLint กับ Jest
ฉันพยายามใช้ linter ESLint กับกรอบการทดสอบ Jest การทดสอบ Jest วิ่งด้วยกลมบางอย่างเช่นjestซึ่งฉันจะต้องบอกผู้ยืมเกี่ยวกับ แต่สิ่งที่ยุ่งยากคือโครงสร้างไดเรกทอรีโดย Jest การทดสอบจะถูกฝังด้วยซอร์สโค้ดใน__tests__โฟลเดอร์ดังนั้นโครงสร้างไดเรกทอรีจึงมีลักษณะดังนี้: src foo foo.js __tests__ fooTest.js bar bar.js __tests__ barTest.js โดยปกติแล้วฉันจะมีการทดสอบทั้งหมดของฉันภายใต้ dir เดียวและฉันสามารถเพิ่ม.eslintrcไฟล์ที่นั่นเพื่อเพิ่ม globals ... แต่แน่นอนฉันไม่ต้องการเพิ่ม.eslintrcไฟล์ใน__test__dir ทุกคน สำหรับตอนนี้ฉันเพิ่งเพิ่ม globals ทดสอบลงใน.eslintrcไฟล์โกลบอลแต่เนื่องจากนั่นหมายความว่าตอนนี้ฉันสามารถอ้างอิงjestในโค้ดที่ไม่ใช่การทดสอบได้ซึ่งดูเหมือนว่าจะไม่เป็นทางออกที่ "ถูกต้อง" มีวิธีรับ eslint ในการใช้กฎที่ยึดตามรูปแบบบางอย่างตามชื่อไดเรกทอรีหรืออะไรทำนองนั้น

14
การเรียกกลับ Async ไม่ได้ถูกเรียกใช้ภายในการหมดเวลา 5000 มิลลิวินาทีที่ระบุโดย jest.setTimeout
ฉันใช้หุ่นกระบอกและล้อเล่นเพื่อทำการทดสอบด้านหน้า การทดสอบของฉันมีลักษณะดังนี้: describe("Profile Tab Exists and Clickable: /settings/user", () => { test(`Assert that you can click the profile tab`, async () => { await page.waitForSelector(PROFILE.TAB); await page.click(PROFILE.TAB); }, 30000); }); บางครั้งเมื่อฉันทำการทดสอบทุกอย่างทำงานตามที่คาดไว้ ในบางครั้งฉันได้รับข้อผิดพลาด: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout. at node_modules/jest-jasmine2/build/queue_runner.js:68:21 at Timeout.callback …

12
วิธีทดสอบประเภทของข้อยกเว้นการโยนใน Jest
ฉันกำลังทำงานกับโค้ดบางอย่างที่ฉันต้องการทดสอบประเภทของข้อยกเว้นที่เกิดจากฟังก์ชัน (เป็น TypeError, ReferenceError ฯลฯ ) กรอบการทดสอบปัจจุบันของฉันคือ AVA และฉันสามารถทดสอบเป็นt.throwsวิธีการโต้แย้งที่สองได้เช่นที่นี่: it('should throw Error with message \'UNKNOWN ERROR\' when no params were passed', (t) => { const error = t.throws(() => { throwError(); }, TypeError); t.is(error.message, 'UNKNOWN ERROR'); }); ฉันเริ่มเขียนการทดสอบของฉันใหม่เป็น Jest และไม่พบวิธีการทำแบบนั้นง่ายๆ เป็นไปได้หรือไม่?

5
จะเรียกใช้การทดสอบ Jest ตามลำดับได้อย่างไร?
ฉันกำลังทำการทดสอบ Jest ผ่านทางnpm test. Jest รันการทดสอบแบบคู่ขนานตามค่าเริ่มต้น มีวิธีใดบ้างที่จะทำให้การทดสอบดำเนินไปตามลำดับ ฉันมีการทดสอบบางอย่างที่เรียกใช้รหัสของบุคคลที่สามที่อาศัยการเปลี่ยนไดเร็กทอรีการทำงานปัจจุบัน
152 jestjs 

11
Jest SecurityError: localStorage ไม่สามารถใช้ได้กับต้นกำเนิดทึบแสง
เมื่อฉันต้องการเรียกใช้โครงการด้วยคำสั่งnpm run testฉันได้รับข้อผิดพลาดด้านล่าง อะไรทำให้เกิดสิ่งนี้ FAIL ● Test suite failed to run SecurityError: localStorage is not available for opaque origins at Window.get localStorage [as localStorage] (node_modules/jsdom/lib/jsdom/browser/Window.js:257:15) at Array.forEach (<anonymous>)


8
รหัสครอบคลุมสำหรับ Jest
มีวิธีการครอบคลุมโค้ดในกรอบการทดสอบ Javascript Jest ที่สร้างขึ้นจากจัสมินหรือไม่? กรอบงานภายในไม่พิมพ์ความครอบคลุมของรหัสที่ได้รับ ฉันได้พยายามยังมีการใช้อิสตันบูล , ผ้าห่มและJSCoverแต่ไม่มีผู้ใดของการทำงานของพวกเขา
131 javascript  jestjs 

9
test process.env กับ Jest
ฉันมีแอปที่ขึ้นอยู่กับตัวแปรด้านสิ่งแวดล้อมเช่น: const APP_PORT = process.env.APP_PORT || 8080; และฉันต้องการทดสอบตัวอย่างเช่น: APP_PORT สามารถตั้งค่าได้โดยตัวแปร node env หรือexpressแอปที่กำลังทำงานบนพอร์ตที่ตั้งค่าด้วยprocess.env.APP_PORT ฉันจะบรรลุเป้าหมายนี้ด้วย Jest ได้อย่างไร? ฉันสามารถตั้งค่าprocess.envตัวแปรเหล่านี้ก่อนการทดสอบแต่ละครั้งได้หรือไม่หรือฉันควรล้อเลียนมันบ้าง

4
จะล้าง Jest cache ได้อย่างไร?
--no-cacheเจ็ทถูกหยิบขึ้นมารุ่นเก่าของแพคเกจและทำให้การทดสอบของฉันล้มเหลวถ้าฉันใช้ ฉันสามารถลบโฟลเดอร์แพ็คเกจออกได้node_modulesและ Jest ยินดีที่จะทำการทดสอบ (เกือบทั้งหมดผ่าน) ฉันจะล้าง Jest cache ได้อย่างไร
122 jestjs 

14
ฉันจะกำหนดวันที่จำลองใน Jest ได้อย่างไร?
ฉันใช้ moment.js เพื่อใช้ตรรกะวันที่ส่วนใหญ่ในไฟล์ตัวช่วยสำหรับส่วนประกอบ React ของฉัน แต่ฉันไม่สามารถหาวิธีล้อเลียนวันที่ใน Jest a la sinon.useFakeTimers()ได้ เอกสารล้อเล่นเท่านั้นพูดเกี่ยวกับฟังก์ชั่นจับเวลาเหมือนsetTimeout, setIntervalฯลฯ แต่ไม่ช่วยเหลือเกี่ยวกับการตั้งค่าวันและจากนั้นการตรวจสอบว่าฟังก์ชั่นวันที่ฉันทำในสิ่งที่พวกเขากำลังหมายถึงการทำ นี่คือไฟล์ JS บางส่วนของฉัน: var moment = require('moment'); var DateHelper = { DATE_FORMAT: 'MMMM D', API_DATE_FORMAT: 'YYYY-MM-DD', formatDate: function(date) { return date.format(this.DATE_FORMAT); }, isDateToday: function(date) { return this.formatDate(date) === this.formatDate(moment()); } }; module.exports = DateHelper; และนี่คือสิ่งที่ฉันตั้งค่าโดยใช้ Jest: jest.dontMock('../../../dashboard/calendar/date-helper') …
120 momentjs  jestjs 

8
วิธีการจำลองฟังก์ชันที่มีชื่อที่นำเข้าใน Jest เมื่อโมดูลไม่ถูกล็อค
ฉันมีโมดูลต่อไปนี้ที่ฉันกำลังพยายามทดสอบใน Jest: // myModule.js export function otherFn() { console.log('do something'); } export function testFn() { otherFn(); // do other things } ดังที่แสดงไว้ข้างต้นก็ส่งออกฟังก์ชั่นบางชื่อและที่สำคัญการใช้งานtestFnotherFn ล้อเล่นเมื่อผมเขียนทดสอบหน่วยของฉันสำหรับtestFnผมต้องการที่จะเยาะเย้ยotherFnการทำงานเพราะผมไม่ต้องการให้เกิดข้อผิดพลาดในการส่งผลกระทบต่อการทดสอบหน่วยของฉันotherFn testFnปัญหาของฉันคือฉันไม่แน่ใจว่าวิธีที่ดีที่สุด: // myModule.test.js jest.unmock('myModule'); import { testFn, otherFn } from 'myModule'; describe('test category', () => { it('tests something about testFn', () => { // I want to …

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