- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经阅读了 Jest 文档,我认为它们按此顺序运行。我还了解到 globalSetup 在不同的进程中运行,因此不与常规测试套件共享任何范围,而是与 globalTeardown 共享任何范围,因此这将是启动测试数据库服务器的好地方。
无论如何,我不清楚我是否做对了,以及我应该使用其他的做什么。
最佳答案
globalSetup
导出 async
的模块的路径将在一切之前运行一次的函数。此处定义的全局变量只能在 globalTeardown
中读取.
通常,模拟出任何依赖关系更有意义,但如果您别无选择,只能启动数据库或其他在测试期间绝对必须运行的外部服务,globalSetup
将是这样做的地方。setupFiles
/setupFilesAfterEnv
setupFiles
是将在每个测试文件之前和安装测试框架之前运行一次的模块列表。setupFilesAfterEnv
是将在每个测试文件之前但在环境中安装测试框架之后运行一次的模块列表。
通常 setupFilesAfterEnv
是在每个测试文件之前运行的任何设置代码的正确位置。仅使用 setupFiles
如果您有特定原因需要在安装测试框架之前运行代码。
你可以想到setupFilesAfterEnv
作为全局beforeAll
.
如果必须在每个测试文件的开头执行某些操作(例如:configuring the Enzyme adapter),那么在 setupFilesAfterEnv
中执行一次是有意义的。文件。beforeAll
Jest
将运行所有 beforeAll
在运行其他任何东西之前在测试文件中运行一次。
使用beforeAll
对于必须在一个特定测试文件的开头运行一次的代码。
例子
包.json
{
...
"jest": {
"globalSetup": "./globalSetup.js",
"globalTeardown": "./globalTeardown.js",
"setupFiles": ["./setupFile.js"],
"setupFilesAfterEnv": ["./setupFileAfterEnv.js"]
}
}
globalSetup.js
module.exports = async () => {
console.log('in globalSetup');
global.GLOBALSETUP = 'globalSetup';
};
globalTeardown.js
module.exports = async () => {
console.log('in globalTeardown');
console.log(global.GLOBALSETUP);
};
安装文件.js
console.log('in setupFile');
global.order = [];
global.order.push(1);
setupFileAfterEnv.js
console.log('in setupFileAfterEnv');
global.order.push(2);
测试.js
beforeAll(() => {
console.log('in beforeAll');
global.order.push(3);
});
test('order', () => {
expect(global.GLOBALSETUP).toBeUndefined(); // SUCCESS
expect(global.order).toEqual([1, 2, 3]); // SUCCESS
});
输出
Determining test suites to run...in globalSetup
console.log
in setupFile
at Object.<anonymous> (setupFile.js:1:98)
console.log
in setupFileAfterEnv
at Object.<anonymous> (setupFileAfterEnv.js:1:1)
console.log
in beforeAll
at Object.<anonymous>.beforeAll (src/test.js:3:11)
PASS src/test.js
✓ order (4 ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 0.658 s, estimated 1 s
Ran all test suites.
in globalTeardown
globalSetup
Watch Usage: Press w to show more.
关于jestjs - Jest 中的 globalSetup、setupFiles、setupFilesAfterEnv 和 beforeAll 有什么区别,它们的具体用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66736782/
我有一个带有数据库和 rabbitmq 用法的小型 Spring Boot 应用程序。 所以我想用集成测试(H2 + apache qpid)进行测试。 @ExtendWith(SpringExten
这是同一测试的 2 个样本。唯一的区别是第一个使用了 beforeAll 中的 promise 。块为变量赋值,而第二个块直接赋值。 我提出了类似的问题 Running spec after prom
我需要使用 React 测试库和 Jest 在我的测试中模拟不同的窗口大小。 目前我必须在每个测试文件中包含这个beforeAll: import matchMediaPolyfill from 'm
我有一个使用 Jest 测试的 Node.js 项目。我有几个具有相同设置要求的测试文件。以前,所有这些测试都在一个文件中,所以我只有一个 beforeAll(...)执行通用设置。现在,随着测试分成
我正在为rest api spring boot编写单元测试。 @RunWith(SpringRunner.class) @SpringBootTest(classes = WorkflowEngin
给定我测试的类,其中有许多嵌套类: class TestWithManyNested { @RegisterExtension static MyExtension extension
我正在尝试通过测试将我的项目从使用 JUnit 4 升级到 JUnit5。升级后: @RunWith(VertxUnitRunner.class) --> @ExtendWith(VertxExten
我尝试过思考这个问题,阅读了一些问题,并且创建了一个小测试: describe("let", () => { let x = 1; it("",function() { console
我遇到了一个常见的场景。我需要在 beforeAll 或每个变量中创建一个变量。 describe('some test', () => { beforeAll(() => { const
我刚刚安装了Protractor v2.0.0 .我尝试添加 beforeAll测试并出错 ReferenceError: beforeAll is not defined 查看堆栈跟踪,我看到 ja
我想在 Eclipse Oxygen 4.7.3a 中从 JUnit 4 转换为 5。我认为添加 Jupiter 库就足够了:库、构建路径等。但是,@BeforeAll , @AfterAll , @
这是我所拥有的: spec :: Spec spec = do manager SpecWith a -> Spec 但我不知道如何从测试中访问经理。 spec :: Spec spec = b
在使用 Jasmine 测试我的 Meteor 应用程序的某个功能之前,我必须为测试准备不同的东西。因此我使用 beforeAll block 。 重置数据库 在数据库中创建一个讲座 在数据库中创建一
我正在使用 nodejs 为我们的 API 创建一个端到端的测试套件。在每次测试运行之前,我需要为该测试插入数据库记录。许多有问题的表没有使用 native 自动增量类型字段作为它们的主键。 (我知道
我正在使用 Jest-Puppeteer 对 Rails 应用程序进行端到端测试。在这些测试之前,我想运行一些种子并进行 DRY 我告诉服务器在每次测试之前转到某个 URL。 // imports d
我最近查看了一位同事的代码,我意识到他在 describe 调用顶部的 BeforeAll 函数中实现了一个 jest 函数,然后在 beforeEach 函数中创建了一个数据对象。这让我想知道,Be
为什么我们不应该将 beforeAll(function(){ let foo = 'test' }) 替换为 let foo = 'test' ?如果第二种方法没问题,beforeAll 的目的是什
目前 JUnit 5 API 只允许在静态方法上使用 @BeforeAll。 所以如果我做这样的事情,它不会编译: @BeforeAll fun setup() { MockitoAnno
我有一个简单的问题。我有这样的类结构:基类和子类(关系是继承)。 @BeforeAll 来自 JUnit5。 abstract class Base { static{ Sy
我正在尝试使用 @Transactional 来测试我的应用程序,以在测试后回滚,并使用 @BeforeAll 设置测试对象: @EnableJpaRepositories @SpringBootTe
我是一名优秀的程序员,十分优秀!