Questions tagged «jestjs»

Jest是Facebook基于Jasmine制作的JavaScript单元测试框架,并提供了自动模拟创建和jsdom环境。它通常用于测试React组件。

2
开玩笑:第三方库使用控制台时如何模拟控制台?
我正在尝试模拟console.warn / error,但我不能。我使用了一个第三方库,该库在其中调用console.warn。我需要测试它是否被调用。在我的测试用例中,我试图对console.warn进行存根处理,但这没有帮助。之后,我尝试手动模拟控制台,但也没有解决。 console.warn = jest.fn(); testSchema('/app/components/Users/UserItem/UserItemContainer.js'); expect(console.warn).toBeCalled(); 没用 console.warn = jest.fn(); testSchema('/app/components/Users/UserItem/UserItemContainer.js'); console.warn('error'); expect(console.warn).toBeCalled(); 做过。但是我仍然console.warn node_modules/babel-relay-plugin/lib/getBabelRelayPlugin.js:138在终端中看到。谁能帮我?

5
我如何在开玩笑中测试axios
我有这个反应 export function fetchPosts() { const request = axios.get(`${WORDPRESS_URL}`); return { type: FETCH_POSTS, payload: request } } 在这种情况下,如何测试axios?开玩笑说,在那个网站上有一个异步代码的用例,他们使用了一个模拟函数,但是我不知道我是否可以用axios做到这一点?参考:https : //facebook.github.io/jest/docs/tutorial-async.html 到目前为止,我已经测试了它是否返回了正确的类型 it('should dispatch actions with the correct type', () => { store.dispatch(fetchPosts()); let action = store.getActions(); expect(action[0].type).toBe(FETCH_POSTS); }); 我不知道如何传递模拟数据并测试它是否返回,但是有人有任何想法吗? 先感谢您

7
Jest是否支持ES6导入/导出?
如果我import/export从ES6使用,那么我所有的Jest测试都会失败并显示以下错误: 意外的保留字 我将受测对象转换为使用旧式IIFE语法,然后突然我的测试通过了。或者,采用一个更简单的测试用例: var Validation = require('../src/components/validation/validation'); // PASS //import * as Validation from '../src/components/validation/validation' // FAIL 同样的错误。显然这里的导入/导出有问题。为了使测试框架满意,使用ES5语法重写代码对我来说是不切实际的。 我有通天的笑话。我尝试了来自GitHub问题的各种建议。到目前为止没有走。 文件package.json "scripts": { "start": "webpack-dev-server", "test": "jest" }, "jest": { "testPathDirs": [ "__tests__" ], "testPathIgnorePatterns": [ "/node_modules/" ], "testFileExtensions": ["es6", "js"], "moduleFileExtensions": ["js", "json", "es6"] }, 文件babelrc { "presets": ["es2015", "react"], …


5
观看并重新运行Jest JS测试
该玩笑文档建议使用npm test来执行测试。 有没有一种方法可以查看您的源代码和测试,以便在相关文件更改后自动重新运行Jest测试?
77 npm  jestjs 

6
如何使用Jest模拟同一模块中的函数
更新:我在https://github.com/magicmark/jest-how-do-i-mock-x/blob/master/src/function-in-same-module/README中收集了此方法和其他方法。 md 正确模拟以下示例的最佳方法是什么? 问题在于,导入时间过后,foo将原始引用保持不变bar。 module.js: export function bar () { return 'bar'; } export function foo () { return `I am foo. bar is ${bar()}`; } module.test.js: import * as module from '../src/module'; describe('module', () => { let barSpy; beforeEach(() => { barSpy = jest.spyOn( module, 'bar' ).mockImplementation(jest.fn()); }); afterEach(() …

5
运行笑话测试时是否可以显示所有测试说明?
我在我的create-react-app项目中使用笑话和酵素。运行时npm test,我得到一个输出,该输出显示已通过的测试文件的名称,但我希望该输出还包括测试的名称。 例: Button.test.js it ('renders button', () => { const button = shallow(<Button type="save"/>); expect(toJson(button)).toMatchSnapshot(); }); 现在,当我运行npm test时,输出仅为: 通过src / Button.test.js“ 以及通过和失败测试的数量(测试成功时)。我希望输出包含“ renders button”和任何其他测试描述(例如运行rspec测试时输出的外观)。

3
在非交互模式下运行CRA Jest
更新:我的用例主要是在CI上运行测试,但是我通常想知道重写默认的CRA Jest参数。 我正在使用Create React App附带的Jest配置运行测试。它总是启动为交互模式: › Press a to run all tests. › Press o to only run tests related to changed files. › Press p to filter by a filename regex pattern. › Press q to quit watch mode. › Press Enter to trigger a test run. 但是我不希望它等待我的输入。我希望它运行一次然后终止。我尝试使用--bailor--no-watchman开关,但它仍以交互模式启动。 如果我全局安装jest,并在项目的根目录中运行它,它将执行一次并完成(就如我所愿)。但是当我跑步时npm …

6
是否存在忽略jest.js中元素位置的数组相等匹配函数?
我得到.toEqual()检查普通对象的所有字段的相等性: expect( {"key1":"pink wool","key2":"diorite"} ).toEqual( {"key2":"diorite","key1":"pink wool"} ); 这样就过去了。 但是对于数组却不是这样: expect(["pink wool", "diorite"]).toEqual(["diorite", "pink wool"]); 在jest docs中似乎没有匹配器函数可以执行此操作,即,不管两个数组的元素位置如何,它都测试两个数组是否相等。我是否必须将一个数组中的每个元素与另一个数组中的所有元素进行测试,反之亦然?还是有另一种方法?
72 jasmine  jestjs 

3
“ .toMatchObject”和“ objectContaining”之间有什么区别
我已经编写了以下测试: it('Can decrement the current step', function () { expect(reducer(TestState, { type: 'GOTO_PREVIOUS_STEP' })).toMatchObject({ currentStep: 4 }); }); it('Can decrement the current step v2', function () { expect(reducer(TestState, { type: 'GOTO_PREVIOUS_STEP' })).toEqual(expect.objectContaining({ currentStep: 4 })); }); 他们两个似乎都通过了测试,两者之间有什么区别吗?它们之间对性能有影响吗?

4
如何嘲笑useHistory挂钩?
我在带有打字稿的React Router v5.1.2中使用UseHistory挂钩吗?运行单元测试时,我遇到了问题。 TypeError:无法读取未定义的属性“ history”。 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(() => { const historyHistory= { replace: jest.fn(), length: 0, location: { pathname: …

1
为什么JEST测试中的getComputedStyle()在Chrome / Firefox DevTools中将不同的结果返回给计算样式
我已经MyStyledButton基于material-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 classes={{ root: buttonStyle.root }} …

5
如何解决“无法在模块外部使用导入语句”
我有一个使用TypeScript,Jest,Webpack和Babel构建的React应用程序(不使用Create React App)。尝试运行“ 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": "^24.0.13", 组件的导入行... import * as React from "react"; import { BrowserRouter as Router, …

1
如何在Vue Composition API组件中使用Jest进行单元测试?
我正在为vue.js中的composition API组件开玩笑地编写单元测试。 但是我无法访问Composition API的setup()中的函数。 指标值 <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 lang="ts"> import {createComponent} from …

2
由于错误而无法使用Jest测试发布方法无法读取未定义的嘲笑
我有一个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 = {}; if (method === 'post') { config.headers = …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.