我们可以利用 toHaveBeenCalledWith
匹配函数调用的参数。如果你只关注一部分参数,你可以用 expect.anything()
来替代其他参数。
test('should have been called with specific argument', () => {
const mockFunction = jest.fn()
mockFunction('ignore', 'ignore', 'important')
expect(mockFunction).toHaveBeenCalledWith(
expect.anything(),
expect.anything(),
'important'
如果你想匹配更精确的参数类型,那么只要用 expect.any()
加上参数类型即可,例如 String 或者 Object。
mockFunction({ ignore: 'ignore' }, 'ignore', 'important')
expect(mockFunction).toHaveBeenCalledWith(
expect.any(Object),
expect.any(String),
'important'
- 原文:https://www.emgoto.com/jest-partial-match/
- Jest断言方法列表:https://jestjs.io/docs/expect
- toMatch: https://jestjs.io/docs/expect#tomatchregexp–string
- toMatchObject: https://jestjs.io/docs/expect#tomatchobjectobject
很多时候用Jest,仅仅是想匹配一个对象的部分,或者测试数组的子集。这种情况下就可以用Jest的部分匹配功能。文章包括:利用Jest的objectContaining匹配对象的键值对利用Jest的arrayContaining匹配数组包括的值如何在Jest的toHaveBeenCalledWith利用部分匹配功能用 Jest 的 objectContaining 进行部分匹配当你想测试对象的子集或者指定的键值对是,你可以使用 objectContaining 匹配器。test('shoul
开玩笑的部分匹配器
jest-partial断言, provided对象是一个子集expected 。 我们并非总是要验证已给定的整个对象。 我们通常只想保护我们需要的属性,而忽略其他所有内容。
使用npm:
npm install --save-dev jest-partial
yarn add -D jest-partial
笑话> v24
将jest-partial添加到您的Jest setupFilesAfterEnv配置中。
" jest " : {
" setupFilesAfterEnv " : [ " jest-partial " ]
笑话<v23
" jest " : {
" setupTestFrameworkScriptFile " : " jest-partial "
如果您已经在使用其他测试框架(例如
Jest测试生成器已经是相当成熟了,Mocha相比各有优势,对于初学者来说,建议选用Jest,在项目中引用Jest,配置相当简单。
但是Jest官方文档里的断言类型实在太多了,罗列出来常用的几种断言类型,供大家参考,如果想要看全集,请移步到Jest官网。
not: 类似于 ! 取反
expect(2).not.toBe(1)
toBe:类似 ===
expect(1).toBe(1)
toEqual:基本用来,匹配对象是否相等
expect({ one: 1 }).toEqual({ one:
Jest是 Facebook 的一套开源的 JavaScript 测试框架, 它自动集成了断言、JSDom、覆盖率报告等开发者所需要的所有测试工具,是一款几乎零配置的测试框架。并且它对同样是 Facebook 的开源前端框架 React 的测试十分友好。
2 安装Jest
2.1 初始化package.json
在shell中输入以下命令,初始化前端项目并生成package.json:
笑话忽略范围
要查看以下所有操作,请运行yarn install (或npm install ),然后进行yarn test (或npx jest --coverage )以收集覆盖率。
使用配置从Jest Coverage中排除文件
见 testPathIgnorePatterns 。 它忽略了src/testignore的内容,而src/testignore实际上只是在包含一个失败的测试。
参见 collectCoverageFrom 。 它不会从收集覆盖率。
从文件级别的Jest Coverage中排除文件
参见 。 它使用注释符号忽略文件。
从Jest报道中排除函数或语句
参见[./src/snippet.js]。 它展示了istanbul ignore next和istanbul ignore [type]语法(在这种情况下, istanbul ignore else )。
jasmine.objectContaining 的适用场合:
jasmine.objectContaining 用于那些期望只关心实际中的某些键/值对的时候。
把这段代码改造一下:
it(`should pass s