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

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

10
วิธีการจำลองวัตถุหน้าต่าง JavaScript โดยใช้ Jest?
ฉันต้องการทดสอบฟังก์ชันที่เปิดแท็บใหม่ในเบราว์เซอร์ openStatementsReport(contactIds) { window.open(`a_url_${contactIds}`); } ฉันต้องการจำลองopenฟังก์ชันของหน้าต่างเพื่อตรวจสอบว่า URL ที่ถูกต้องถูกส่งไปยังopenฟังก์ชัน ใช้ Jest ฉันไม่รู้ว่าจะล้อเลียนไฟล์window. ฉันพยายามตั้งค่าwindow.openด้วยฟังก์ชันจำลอง แต่วิธีนี้ไม่ได้ผล ด้านล่างนี้เป็นกรณีทดสอบ it('correct url is called', () => { window.open = jest.fn(); statementService.openStatementsReport(111); expect(window.open).toBeCalled(); }); แต่มันทำให้ฉันมีข้อผิดพลาด expect(jest.fn())[.not].toBeCalled() jest.fn() value must be a mock function or spy. Received: function: [Function anonymous] ฉันควรทำอย่างไรกับกรณีทดสอบ ข้อเสนอแนะหรือคำแนะนำใด ๆ จะได้รับการชื่นชม

6
Jest: วิธีที่ดีกว่าในการปิดใช้งานคอนโซลภายในการทดสอบหน่วย
ฉันสงสัยว่ามีวิธีที่ดีกว่าในการปิดใช้งานข้อผิดพลาดของคอนโซล ภายในการทดสอบ Jest เฉพาะหรือไม่ (เช่นคืนค่าคอนโซลเดิมก่อน / หลังการทดสอบแต่ละครั้ง) นี่คือแนวทางปัจจุบันของฉัน: describe("Some description", () => { let consoleSpy; beforeEach(() => { if (typeof consoleSpy === "function") { consoleSpy.mockRestore(); } }); test("Some test that should not output errors to jest console", () => { expect.assertions(2); consoleSpy = jest.spyOn(console, "error").mockImplementation(); // some function that uses …

5
คุณจะทดสอบการไม่มีอยู่ขององค์ประกอบโดยใช้ jest และ react-testing-library ได้อย่างไร?
ฉันมีไลบรารีคอมโพเนนต์ที่ฉันกำลังเขียนการทดสอบหน่วยสำหรับการใช้ Jest และ react-testing-library จากอุปกรณ์ประกอบฉากหรือเหตุการณ์บางอย่างฉันต้องการตรวจสอบว่าองค์ประกอบบางอย่างไม่ได้รับการแสดงผล getByText, getByTestIdฯลฯ จากเส้นข้างและความผิดพลาดในreact-testing-libraryถ้าองค์ประกอบไม่พบสาเหตุที่ทำให้การทดสอบที่จะล้มเหลวก่อนที่จะexpectเกิดเพลิงไหม้ฟังก์ชั่น คุณจะทดสอบสิ่งที่ไม่มีอยู่ใน jest โดยใช้ react-testing-library ได้อย่างไร?

3
วิธีเปลี่ยนการใช้งานจำลองบนพื้นฐานการทดสอบหนึ่งครั้ง [Jestjs]
ฉันต้องการที่จะเปลี่ยนการดำเนินงานของการพึ่งพาล้อเลียนในแต่ละวิธีการทดสอบเดียวโดยการขยายจำลองเริ่มต้นพฤติกรรมและการคืนค่ากลับมาในการดำเนินการเดิมเมื่อรันการทดสอบต่อไป สั้น ๆ นี่คือสิ่งที่ฉันพยายามบรรลุ: จำลองการพึ่งพา เปลี่ยน / ขยายการใช้งานจำลองในการทดสอบเดียว เปลี่ยนกลับเป็นการจำลองแบบเดิมเมื่อดำเนินการทดสอบครั้งต่อไป ฉันกำลังใช้Jest v21. นี่คือลักษณะของการทดสอบ Jest โดยทั่วไป: __mocks__/myModule.js const myMockedModule = jest.genMockFromModule('../myModule'); myMockedModule.a = jest.fn(() => true); myMockedModule.b = jest.fn(() => true); export default myMockedModule; __tests__/myTest.js import myMockedModule from '../myModule'; // Mock myModule jest.mock('../myModule'); beforeEach(() => { jest.clearAllMocks(); }); describe('MyTest', () => { …

4
ทำการทดสอบเพียงครั้งเดียวกับ Jest
ง่ายมากฉันต้องการเรียกใช้การทดสอบกับ Jest เพียงครั้งเดียว ฉันใส่it.onlyหรือdescribe.onlyแต่มันยังคงดำเนินการทดสอบมากมาย ฉันคิดว่ามันเรียกใช้การทดสอบทั้งหมดตั้งแต่การกระทำครั้งสุดท้ายของฉัน แต่มันไม่ควรมีพฤติกรรมเช่นนี้เมื่อonlyตั้งค่าสถานะไว้อย่างชัดเจนใช่ไหม อะไรเป็นสาเหตุของพฤติกรรมนี้และจะเรียกใช้การทดสอบเดี่ยวได้อย่างไร

4
Jest: วิธีทดสอบคีย์ออบเจ็กต์และคุณสมบัติ
ฉันมีmapModuleที่ที่ฉันนำเข้าส่วนประกอบและส่งออก: import ComponentName from '../components/ComponentName'; export default { name: ComponentName, }; ฉันจะทดสอบได้อย่างไรว่าmapModuleมีคีย์ค่าที่ส่งออกที่ถูกต้องและไม่เป็นโมฆะหรือไม่ได้กำหนดไว้

9
จำลองการพึ่งพาในเรื่องตลกด้วย typescript
เมื่อทดสอบโมดูลที่มีการอ้างอิงในไฟล์อื่น เมื่อกำหนดโมดูลนั้นให้เป็นjest.Mocktypescript จะทำให้เกิดข้อผิดพลาดที่เมธอดmockReturnThisOnce(หรือเมธอด jest.Mock อื่น ๆ ) ไม่มีอยู่ในการอ้างอิงนั่นเป็นเพราะมันถูกพิมพ์ไว้ก่อนหน้านี้ วิธีที่เหมาะสมในการรับ typescript เพื่อสืบทอดประเภทจาก jest.Mock คืออะไร? นี่คือตัวอย่างสั้น ๆ การพึ่งพา const myDep = (name: string) => name; export default myDep; test.ts import * as dep from '../depenendency'; jest.mock('../dependency'); it('should do what I need', () => { //this throws ts error // Property mockReturnValueOnce does …

4
วิธีการเยาะเย้ยการใช้ตะขอประวัติศาสตร์ในการล้อเล่น?
ฉันใช้ UseHistory hook ใน router router v5.1.2 กับ typescript หรือไม่ เมื่อเรียกใช้การทดสอบหน่วยฉันพบปัญหา TypeError: ไม่สามารถอ่าน 'ประวัติ' ของคุณสมบัติที่ไม่ได้กำหนด import { mount } from 'enzyme'; import React from 'react'; import {Action} from 'history'; import * as router from 'react-router'; import { QuestionContainer } from './QuestionsContainer'; describe('My questions container', () => { beforeEach(() => { …

1
ทำไม getComputedStyle () ในการทดสอบ JEST ส่งคืนผลลัพธ์ที่แตกต่างไปยังสไตล์ที่คำนวณใน Chrome / Firefox DevTools
ผมเคยเขียนปุ่มที่กำหนดเอง ( MyStyledButton) ตามวัสดุ UI Button import React from "react"; import { Button } from "@material-ui/core"; import { makeStyles } from "@material-ui/styles"; const useStyles = makeStyles({ root: { minWidth: 100 } }); function MyStyledButton(props) { const buttonStyle = useStyles(props); const { children, width, ...others } = props; return ( <Button …

5
วิธีแก้ไข“ ไม่สามารถใช้คำสั่งนำเข้านอกโมดูล” ได้อย่างตลก
ฉันมีแอปพลิเคชัน React (ไม่ได้ใช้สร้างแอป React) ที่สร้างโดยใช้ TypeScript, Jest, Webpack และ Babel เมื่อพยายามเรียกใช้ "yarn jest" ฉันได้รับข้อผิดพลาดต่อไปนี้: ฉันได้ลองลบแพ็กเกจทั้งหมดและเพิ่มใหม่อีกครั้ง มันไม่ได้แก้ปัญหานี้ ฉันได้ดูคำถามและเอกสารประกอบที่คล้ายกันและยังคงมีความเข้าใจผิดอยู่บ้าง ฉันไปจนถึงทำตามคำแนะนำอื่นสำหรับการตั้งค่าสภาพแวดล้อมนี้ตั้งแต่เริ่มต้นและยังได้รับปัญหานี้ด้วยรหัสของฉัน การพึ่งพารวมถึง ... "dependencies": { "@babel/plugin-transform-runtime": "^7.6.2", "@babel/polyfill": "^7.6.0", "babel-jest": "^24.9.0", "react": "^16.8.6", "react-dom": "^16.8.6", "react-test-renderer": "^16.11.0", "source-map-loader": "^0.2.4" }, "devDependencies": { "@babel/core": "^7.6.0", "@babel/preset-env": "^7.6.0", "@babel/preset-react": "^7.0.0", "@types/enzyme": "^3.9.2", "@types/enzyme-adapter-react-16": "^1.0.5", "@types/jest": …

2
ไม่สามารถทดสอบวิธีการโพสต์ด้วย Jest เนื่องจากข้อผิดพลาดไม่สามารถอ่าน mockImplementation ไม่ได้กำหนด
ฉันมีบริการ API ที่ฉันมีวิธีการที่แตกต่างกันในการโทรไปยัง API ฉันได้ทดสอบคำขอ GET ทั้งหมดเรียบร้อยแล้ว แต่ฉันประสบปัญหาในการทดสอบคำขอ POST นี่คือวิธีการ: export default class ApiService { static makeApiCall = <T>( url: string, oneCb: <T>(d: Data) => T, secondCb: (d: T) => void, errorCb?: (a: ErrorModel) => void, method = 'get', data = {}, ): Promise<void> => { const config: AxiosRequestConfig = …

1
วิธีการทดสอบองค์ประกอบของชั้นเรียนในการตอบสนอง
ฉันลองทดสอบหน่วยฉันสร้าง sandbox พร้อมตัวอย่างปลอมhttps://codesandbox.io/s/wizardly-hooks-32w6l (ในความเป็นจริงฉันมีแบบฟอร์ม) class App extends React.Component { constructor(props) { super(props); this.state = { number: 0 }; } handleSubmit = (number1, number2) => { this.setState({ number: this.handleMultiply(number1, number2) }) } handleMultiply = (number1, number2) => { return number1 * number2 } render() { const { number } = this.state; …

1
วิธีการทดสอบหน่วยด้วยความขบขันในองค์ประกอบ vue องค์ประกอบ API?
ฉันกำลังเขียนการทดสอบหน่วยที่มีเรื่องตลกสำหรับองค์ประกอบ API ของฉันใน vue.js. แต่ฉันไม่สามารถเข้าถึงฟังก์ชั่นในการตั้งค่า API ขององค์ประกอบ () Indicator.vue <template> <div class="d-flex flex-column justify-content-center align-content-center"> <ul class="indicator-menu d-flex justify-content-center"> <li v-for="step in steps" :key="step"> <a href="#" @click="updateValue(step)" :class="activeClass(step, current)"> </a> </li> </ul> <div class="indicator-caption d-flex justify-content-center"> step <span> {{ current }}</span> from <span> {{ steps }}</span> </div> </div> </template> <script …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.