草庐IT

javascript - 如何使用 Jest 模拟 JavaScript 'window' 对象?

我需要测试一个在浏览器中打开新标签页的功能openStatementsReport(contactIds){window.open(`a_url_${contactIds}`);}我想模拟window的open函数,这样我就可以验证传递给open函数的URL是否正确。使用Jest,我不知道如何模拟window。我试图用模拟函数设置window.open,但这种方式不起作用。下面是测试用例:it('thecorrectURLiscalled',()=>{window.open=jest.fn();statementService.openStatementsReport(111);exp

javascript - 在 Jest 中模拟全局变量

在Jest中有什么方法可以模拟全局对象,例如navigator或Image*?我几乎放弃了这一点,并将其留给了一系列可模拟的实用方法。例如://Utils.jsexportisOnline(){returnnavigator.onLine;}测试这个小函数很简单,但很麻烦,而且根本不确定。我可以完成75%的路程,但这是我所能达到的极限://Utils.test.jsit('knowsifitisonline',()=>{const{isOnline}=require('path/to/Utils');expect(()=>isOnline()).not.toThrow();expect

javascript - 使用 Jest 只运行一次测试

我只想用Jest运行一个测试。我使用it.only或describe.only,但它仍然运行大量测试。我认为它运行了self上次提交以来的所有测试,但它不应该在显式设置only标志的情况下出现这种行为,对吧?是什么导致了这种行为?我该如何运行单个测试? 最佳答案 Jestparallelizestestrunsanditdoesn'tknowupfrontwhichtestsitshouldrunandwhichitshouldn'trun.Thismeanswhenyouuse"fit",itwillonlyrunonetesti

node.js - 使用 Jest 模拟 namespace 和具有相同名称的函数

我正在使用的库的结构为declarenamespacefoo{functionbar();};declarenamespacefoo.bar{functionbaz();};所以我需要模拟的两个函数是foo.bar()和foo.bar.baz()。模拟我之前使用的foo.bar()require('foo');jest.mock('foo',()=>({bar:()=>mockedBar,}));有什么方法可以模拟foo.bar.baz()吗?我试过了jest.mock('foo.bar',()=>({}));但它显示一条消息Cannotfindmodule'foo.bar'from'

node.js - 开 Jest , typescript ,ts-jest : Coverage is slightly incorrect

我正在使用TypeScript、Jest和ts-jestNPM模块编写一个项目。当我运行测试时,我确实得到了一些覆盖率,但HTML报告不太正确:此外,一些函数被标记为未经测试,即使它们确实被调用了。我的package.json设置如下:{"jest":{"transform":{".(ts|tsx)":"/node_modules/ts-jest/preprocessor.js"},"testRegex":"(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$","moduleFileExtensions":["ts","tsx","js"],"t

node.js - 让 Jest 在测试时忽略 .less 导入

测试组件我正在尝试使用Jest对react组件运行一些非常简单的测试。由于组件文件顶部的这一行,我遇到了问题import{}from'./style.less';这里的导入不需要测试,最好从测试中忽略。[npm测试]的结果当通过npmtest运行测试时,我得到响应FAILtests/app_test.js●RuntimeErrorSyntaxError:Unexpectedtoken{infile'client/components/app/style.less'.Makesureyourpreprocessorissetupcorrectlyandensureyour'preproc

node.js - 在所有测试运行后开 Jest 清理

是否可以在Jest中运行在所有其他测试完成后运行的清理或拆卸任务?类似于setupFiles允许在任何测试运行之前设置任务的方式。如果无论测试是否有任何错误,它也可以运行,则可以加分。将afterAll(()=>{})放在文件的顶层(在任何describe函数之外)似乎只会在该特定文件的测试完成后运行。用例是我有许多测试文件将在开发数据库中创建用户,我不想让每个测试文件负责清理和删除用户之后。编写测试时也可能发生错误,因此如果不管错误如何都发生清理,那将是更可取的。 最佳答案 setupFiles有一个兄弟钩子(Hook),它会在每

javascript - 开 Jest : Difference betwen --runInBand and --maxWorkers 1

什么时候适合使用--runInBand中的每一个?或--maxWorkers1选项?如果我的意图是按顺序运行所有测试(一次一个,按顺序),那么哪个是正确的选择?额外细节:我正在使用Jest测试NodeJsexpress应用程序,集成测试通过supertest访问HTTP端点.这可能对答案没有任何影响,只是在相关的情况下提及。这是JestCLI引用:https://facebook.github.io/jest/docs/cli.html相关部分:--maxWorkers=别名:-w。指定工作池为运行测试生成的最大工作人员数。这默认为您机器上可用的内核数。在CI等资源有限的环境中调整此设

node.js - 使用 Jest 进行测试失败,错误为 : Error watching file for changes: EMFILE

我尝试为React.js应用程序编写测试。一切都很顺利,但是在用Git跟踪目录之后(用它做了一个Gitrepo)。测试失败并出现以下错误2017-01-1505:05node[1278](FSEvents.framework)FSEventStreamStart:register_with_server:ERROR:f2d_register_rpc()=>(null)(-22)2017-01-1505:05node[1278](FSEvents.framework)FSEventStreamStart:register_with_server:ERROR:f2d_register_rp

node.js - 使用绝对路径导入组件时,Jest 给出 `Cannot find module`

运行Jest时收到以下错误Cannotfindmodule'src/views/app'from'index.jsx'atResolver.resolveModule(node_modules/jest-resolve/build/index.js:179:17)atObject.(src/index.jsx:4:12)index.jsximportAppContainerfrom'src/views/app';package.json"jest":{"collectCoverageFrom":["src/**/*.{js,jsx,mjs}"],"setupFiles":["/conf