首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用jest测试中继[createFragmentContainer]?

在Jest中测试createFragmentContainer,你需要模拟GraphQL查询和响应,以及React组件的渲染。以下是一个简单的示例,展示了如何使用Jest和React Testing Library来测试createFragmentContainer

步骤 1: 安装依赖

确保你已经安装了必要的依赖:

代码语言:javascript
复制
npm install --save-dev jest @testing-library/react @testing-library/jest-dom @apollo/client graphql

步骤 2: 创建一个简单的组件和容器

假设你有一个简单的组件和一个使用createFragmentContainer的容器:

代码语言:javascript
复制
// MyComponent.js
import React from 'react';

const MyComponent = ({ data }) => {
  return <div>{data.someField}</div>;
};

export default MyComponent;
代码语言:javascript
复制
// MyContainer.js
import { createFragmentContainer } from 'react-relay';
import graphql from 'babel-plugin-relay/macro';
import MyComponent from './MyComponent';

const fragmentSpec = graphql`
  fragment MyContainer_data on SomeType {
    someField
  }
`;

const MyContainer = createFragmentContainer(MyComponent, fragmentSpec);

export default MyContainer;

步骤 3: 编写测试

现在你可以编写Jest测试来模拟GraphQL响应并验证组件的行为:

代码语言:javascript
复制
// MyContainer.test.js
import React from 'react';
import { render } from '@testing-library/react';
import { MockedProvider } from '@apollo/client/testing';
import MyContainer from './MyContainer';

const mocks = [
  {
    request: {
      query: require('./__generated__/MyContainer_data.graphql'), // 这是自动生成的GraphQL查询文件
      variables: {},
    },
    result: {
      data: {
        someType: {
          someField: 'Hello, World!',
        },
      },
    },
  },
];

describe('MyContainer', () => {
  it('should render the correct data', async () => {
    const { getByText } = render(
      <MockedProvider mocks={mocks} addTypename={false}>
        <MyContainer />
      </MockedProvider>
    );

    expect(getByText('Hello, World!')).toBeInTheDocument();
  });
});

注意事项

  1. GraphQL查询文件require('./__generated__/MyContainer_data.graphql') 这行代码引用了由Babel Relay插件自动生成的GraphQL查询文件。确保你的构建流程包含了Relay插件,并且生成了相应的文件。
  2. MockedProviderMockedProvider 是Apollo Client提供的一个组件,用于在测试环境中模拟GraphQL服务器响应。
  3. addTypename:设置为false可以避免在测试中添加额外的__typename字段,这通常用于简化测试数据。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Jest 进行 JavaScript 测试

测试分为三大类: 单元测试 集成测试 UI测试 在这个 Jest 教程中,我们将仅涵盖单元测试,但在文章的最后,你将找到更多用于其他类型测试的资源。 什么是Jest?...现在来测试吧! 测试结构和第一次失败的测试 现在创建你的第一次Jest测试。...让我们大写搜索词强调函数: function filterByTerm(inputArr, searchTerm) { return inputArr.filter(function(arrayElement...Jest 可以顺利地测试 React 应用(Jest 和 React 均来自 Facebook 的工程师)。Jest 也是 Create React App 中的默认测试器。...要了解有关 UI测试的更多信息,我强烈建议你查看 Cypress 进行 JavaScript 端到端测试【https://www.valentinog.com/blog/cypress/】。

2.7K30

Jest做前端单元测试

倒也不是说前端单元测试一无是处,对于我们平常的业务功能测试可能没啥,但对于框架作者来说还是很有用的,在很多知名的框架代码里我们也都能看到专门的test测试目录。...市面上比较常见的前端单元测试 Jest、Mocha,各种对比 Jest 略胜一筹,所以下面就来初体验下 Jest 吧。...Jest 安装和使用直接新建个目录用 npm 安装就可以写个 demo 了,Jest 官方文档上也有教程。...# 初始化npm init# 安装(也可以全局安装)npm install --save-dev jest#测试:注意先要在 package.json 里加上"scripts": { "test": "...jest" }npm run test求两个数字之和的 sum.jsfunction sum(a, b) { return a + b}module.exports = sum测试脚本文件 sum.test.js

25420
  • JavaScript 测试教程 part 1: Jest 进行单元测试

    本文是 JavaScript 测试教程 系列中的第1部分 1. JavaScript测试教程-part 1: Jest 进行单元测试 2....被测试的单元可以是函数、模块和类等。单元测试应该相互隔离并且彼此独立。对于给定的输入,单元测试检查结果,通过尽早发现问题并避免退化,可以帮助你确保程序的每个部分都能按预期工作。...多亏了他,你可以一种方法来确保你的代码在整体上能够正常运行。 端到端测试(E2E) 与其他类型的测试相反,端到端测试始终在浏览器(或类似浏览器)环境中运行。... Jest 进行单元测试 Jest 是 Facebook 开发的测试框架。它的目标之一是通过现成可用的工具提供“零配置”体验。它已经存在了一段时间,并且快速可靠。...divide.js 1function divide(a, b) { 2 return a / b; 3} 4module.exports = divide; Jest 正则表达式确定要测试的文件。

    2.8K20

    jest 单元测试改善老旧的 Backbone.js 项目

    升级测试框架 和之前文章中的例子相同,本次依然采用 Jest 作为测试框架。...原有用例 早期的项目中其实是有一些单元测试代码的,主要是 Jasmine 对部分 model/collection 进行了测试。...的单元测试并不严谨,依赖了提供 mock 数据的 php 服务器环境 三是由于视图层没有很好的组件化,从而缺乏对视图组件的测试 jest for Backbone 的实践 jest 是比较新的测试框架...总结 jest 灵活的配置能力,使其能方便的应用于各种类型既有项目的 TDD 开发和重构 之前的其他测试框架下的例,可以快速迁移到 jest 中 Backbone.View 视图组件在经过 ES6 升级和合理封装后...组件引入的模板,也可以 jest.doMock() 很好的支持 将单元测试任务加入原有的 build 工作流,可以保证相关代码之后的持续有效 (end)

    3.5K10

    前端单元测试Jest

    前端的测试框架有很多:mocha, jasmine, ava, testcafe, jest,他们都有各自擅长的领域和特点,而我们采用的jest框架具有如下的一些特点: 适应性:Jest是模块化、可扩展和可配置的...; 沙箱和快速:Jest虚拟化了JavaScript的环境,能模拟浏览器,并且并行执行; 快照测试Jest能够对React 树进行快照或别的序列化数值快速编写测试,提供快速更新的用户体验; 支持异步代码测试...,对于某些不容易构造或者不容易获取的对象,一个虚拟的对象来创建以便继续进行测试测试方法。...当有异步方式运行的代码的时候,Jest需要知道当前它测试的代码是否已经完成,然后它才可以转移动另一个测试中,也就是说,测试例一定要在测试对象结束之后才能够运行。...附: 实例源码 参考: React Native单元测试 Jest测试官方文档

    2.7K20

    初尝 Jest 单元测试

    那web也引入自动化测试吧 当然了,自动化测试不是说一句话那么简单了,前期选型框架,编写测试团队都不一定能支持得上,而且web功能变化如此频繁,更新用例说不定还真不如手工过一遍。...)和测试框架(Jest),所以,看怎么样在已有项目快速补充上单元测试吧。...={[Function]} onMouseLeave={[Function]} > Facebook `; 在之后的toMatchSnapshot()调用就会与之比较,如有不同,则是例失败...从其需要的依赖来看, npm install --save-dev jest babel-jest babel-preset-es2015 babel-preset-react react-test-renderer...机智的facebook团队早就想到了,Using with webpack 虽然项目的是fis构建,但是思路是可以参考的,就是给jest加个解析路径的配置,在package.json中添加jest项配置

    1.6K10

    Jest实战:单元测试与服务测试

    而最近刚到团队,被安排给 vemoJS 和 cloudbase-cli 写测试用例,并且要保证覆盖率! 这里主要以 vemojs 下的测试用例为主来讲解 Jest 要注意的地方。...(内置无头浏览器)来模拟用户使用,监听数据变动 jest 自带覆盖率统计工具 测试过程 针对上面的步骤以及核心的 jest 配置,分别做讲解。...配置文件和命令行 jest 提供两种方式来让用户自定义配置,一个是根目录的 jest.config.js ,另一个是启动 jest 的时候给参数。我是采用两者混搭的方法。...jest.config.js :在统计覆盖率的时候,忽略 test 和 node_modules 文件夹下。...在做调研的时候发现,jest 的下载量和更新记录远远高于 supertest,而且更纯粹。为什么这么说呢?它提供一种测试的组织形式,其它可以借助第三方库和工具实现。

    3.4K10

    使用Jest测试原生TypeScript项目

    关于rootDir 在进行技术选型的过程中,我看了最新版本的vue-cli里推荐哪些框架进行测试,一个是jest,还一个是krama+mocha。...我选择了jestjest本身是fb出的,对于react非常友好。本身也做了许多环境上的封装切换jsdom环境或者node环境非常方便。我最后选择了这个。...并且是唯一性的,测试用例可靠性也有保障。之后我们就只需要配合一个CI,每次提交前跑一边我们的测试代码,所有用例测试成功即可pr,否则直接被拒绝。...写完了测试,给我们的jest.config 多加一行配置,来生成我们的测试报告(Jest内置了 istanbul) javascript module.exports = { // ... collectCoverage...总结 至此,你应该对前端UI测试应该大致有一个宏观的了解。 本文没有过多得介绍Jest的用法或者语法,希望可以给不知道如何做测试的朋友们一点方向,自己去尝试找到适合自己项目的才是最好的。

    2.9K60

    使用jest进行单元测试

    今年的不幸与坎坷使我有很长一段时间去思考人生,不想将就了,鲁棒健壮的程序,开发和测试应该是分得很开的,于是我选择jest去做单元测试这件事。...不扯犊子直接说吧,第一点,数据、茫茫多的测试用例去告诉使用者,你的程序是多么鲁棒健壮;第二点,把它作为一种素养去培养吧,当你按照一系列规范去做事,那么你做出来的东西,我想是有品质在的。...当然你也可以选择直接CommonJS的写法,node天然支持的。...jest的相关配置 package.json中相关scripts 这里笔者罗列了常用的通用的一些关于jest的脚本,后面测试结果会陆续补充一些测试脚本,以上的脚本都编写在package.json文件下的.../test/caculator.test.js --watch": 单文件监视测试 "test:watchAll": "jest --watchAll": 监视所有文件改动,测试相应的测试

    3.6K60

    初尝 Jest 单元测试

    那web也引入自动化测试吧 当然了,自动化测试不是说一句话那么简单了,前期选型框架,编写测试团队都不一定能支持得上,而且web功能变化如此频繁,更新用例说不定还真不如手工过一遍。...)和测试框架(Jest),所以,看怎么样在已有项目快速补充上单元测试吧。...={[Function]} onMouseLeave={[Function]} > Facebook `; 在之后的toMatchSnapshot()调用就会与之比较,如有不同,则是例失败...从其需要的依赖来看, npm install --save-dev jest babel-jest babel-preset-es2015 babel-preset-react react-test-renderer...机智的facebook团队早就想到了,Using with webpack 虽然项目的是fis构建,但是思路是可以参考的,就是给jest加个解析路径的配置,在package.json中添加jest项配置

    1.8K80

    Jest测试语法系列之Globals

    在上一篇文章中,我们主要介绍了Jest测试框架语法系列之Matchers的相关内容,本篇主要涉及的是Global Functions(全局函数),也是官方提供给开发者的核心功能之一。...afterEach(fn, timeout) 在该文件中的每一个测试完成后运行一个函数,如果函数返回一个promise,Jest会等待该promise在继续之前解决。...beforeAll(fn, timeout) 在该文件运行的任何测试之前运行一个函数,如果函数返回一个承诺,则Jest会等待在运行测试之前解决这个问题。...beforeEach(fn, timeout) 在该文件运行的每个测试之前运行一个函数,如果函数返回一个promise,Jest将等待该承诺在运行测试之前解决。...如果测试返回了一个promise,Jest会在测试完成之前等待promise。Jest还将等待,如果你为测试函数提供一个参数,通常称为done。当你想要测试回调时,这将非常方便。

    1K30

    Jest测试语法系列之Matchers

    关于Jest测试的基础内容,可以参考之前的博客:前端单元测试Jest 本文主要讲的是匹配器(Matchers),匹配器(Matchers)是Jest中非常重要的一个概念,它可以提供很多种方式来让你去验证你所测试的返回值...后面的 toBe 就是一个matcher,当Jest运行的时候它会记录所有失败的matcher的详细信息并且输出给用户,让维护者清楚的知道failed的原因,如果我们改成 toBe(5),将会输出错误的提示...,如下图: toBe 是测试具体的某一个值,如果需要测试对象,需要用到toEqual。...,有时需要区分undefined、null和false,这些可以使用Jest的真实性匹配。...function是否会抛出特定的异常信息,可以 toThrow 。

    54420
    领券