- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Jest 为我的 Express 服务器编写集成测试。由于 Jest 并行运行测试(并且我想避免使用 --runInBand
依次运行测试),我正在使用 get-port用于查找随机可用端口的库,以便不同的测试套件不会发生端口冲突。
我的测试都成功运行,唯一的问题是服务器无法在 afterAll
Hook 内正常关闭。这会导致 Jest 在控制台中打印以下内容...
Jest did not exit one second after the test run has completed.
This usually means that there are asynchronous operations that weren't stopped in your tests.
Consider running Jest with `--detectOpenHandles` to troubleshoot this issue.
当我使用 --detectOpenHandles
标志时,Jest 只是在测试完成后挂起。控制台不会打印任何内容。
这是我的测试代码...
let axios = require('axios')
const getPort = require('get-port')
const { app } = require('../../index')
const { Todo } = require('../../models')
// set reference to server to access
// from within afterAll hook
let server
beforeAll(async () => {
const port = await getPort()
axios = axios.create({ baseURL: `http://localhost:${port}` })
server = app.listen(port)
})
afterAll(() => {
server.close()
})
describe('GET /todos', () => {
it('returns a list of todos', async () => {
const { data: todos } = await axios.get('/todos')
todos.forEach(todo => {
expect(Todo.validate(todo)).toEqual(true)
})
})
})
最佳答案
我在这个问题的 github 线程上。这正是适合我的配置。在 package.json 中
"test": "jest --no-cache --detectOpenHandles --runInBand --forceExit",
这是测试文件中的配置
afterEach(async () => {
await server.close();
});
afterAll(async () => {
await new Promise(resolve => setTimeout(() => resolve(), 10000)); // avoid jest open handle error
});
beforeEach(() => {
// eslint-disable-next-line global-require
server = require('../index');
jest.setTimeout(30000);
});
或者您只有 afterAll 为测试主体中的每个测试单独设置超时和 settimeout。这是下面的示例
afterEach(async () => {
await server.close();
});
afterAll(async () => {
await new Promise(resolve => setTimeout(() => resolve(), 10000)); // avoid jest open handle error
});
beforeEach(() => {
// eslint-disable-next-line global-require
server = require('../index');
});
describe('POST /customers', () => {
jest.setTimeout(30000);
test('It creates a customer', async () => {
const r = Math.random()
.toString(36)
.substring(7);
const response = await request(server)
.post('/customers')
.query({
name: r,
email: `${r}@${r}.com`,
password: 'beautiful',
});
// console.log(response.body);
expect(response.body).toHaveProperty('customer');
expect(response.body).toHaveProperty('accessToken');
expect(response.statusCode).toBe(200);
});
});
关于node.js - 如何在 Jest afterAll 钩子(Hook)中关闭 Express 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59011575/
TLDR;在混合了 BeforeAndAfterAll 的 ScalaTest 规范中和 ParallelTestExecution , afterAll()在每次测试后都被调用,然后在所有测试之后再
我正在使用 Jasmine 2.3.1。以下规范执行导致 afterAll 方法未被调用: var http = require('http'); describe("simple server te
在我的 ScalaTest 套件结束时,我需要进行一些数据库清理。清理本身就是一个Future。该套件不会调用 super.afterAll(),这会使套件使用的一些资源(例如 Web 浏览器和数据库
如果我运行下面的 SubClass 单元,我希望 @AfterAll 在测试之后执行。然而,输出就是这样: init in super class init in sub class test OK
@BeforeAll 和 @AfterAll 必须是静态的。所以我不能使用JdbcTemplate。我该如何清空数据库? 我现在已经使用@PostConstruct 在方法中初始化了数据。但我找不到工
我正在测试一个使用 cloudant 的 Web 应用程序。我在 beforeAll() 中设置了一个测试数据库,并想在 afterAll() 中的所有测试后将其删除。 之前的代码被执行,并且我创建了
我在我的集成测试中使用 cucumber-jvm,我需要在所有场景完成后执行一些代码,只需执行一次。 仔细阅读了一些帖子,例如 this并审查了这份报告issue ,我已经完成了它做这样的事情:
我正在尝试使用 jasmine 的 beforeAll 和 afterAll 方法,用 frisby.js 创建一套测试,因为实际上,frisby 不支持这种方法。所以,这就是我想要做的: var f
我想在所有测试之前做点什么,然后再做?组织代码的最佳方式是什么?例如:备份一些变量 -> 清除它们 -> 测试一些东西 -> 恢复备份。 'beforeEach' 和 'afterEach' 太贵了。
之前和之后的方法在 JUnitPlatform 中不起作用。 代码如下。 import org.junit.jupiter.api.AfterAll; import org.junit.jupiter
我想在功能文件之前执行以下一些操作。 public void beforeFeature() { File path = new File("D:\\AccelareWorkFitComple
我有一个测试类,里面有多个嵌套测试类。外部测试类使用实现 BeforeAllCallback 和 AfterAllCallback 的扩展。当执行外部测试类时,每个嵌套类都会调用这些接口(interf
我有多个 JUnit 测试类要运行,每个测试类中都有多个测试。我有一个基本测试类,它是所有测试类的父类。有没有办法在基测试类中编写在 @BeforeAll 之前和 @AfterAll 之后对所有测试类
有一些文件我正在重复这种模式: beforeAll(() => { MockDate.set(1487076708000) }) afterAll(() => { MockDat
我已在单独的文件 bootstrap.js 中定义了 beforAll 和 afterAll,但我无法进行集成测试。我正在使用无服务器堆栈。我从 github 获得了帮助,但该示例是用 mocha 编
我们正在构建一个 Angular 单页面应用程序。过去几周的一些提交导致 AfterAll 方法中出现随机测试失败,并显示以下错误消息: AfterAll Uncaught TypeError: Yo
我正在尝试使用 Jest 为我的 Express 服务器编写集成测试。由于 Jest 并行运行测试(并且我想避免使用 --runInBand 依次运行测试),我正在使用 get-port用于查找随机可
在运行我的单元测试时,有时,即使它们通过了,在所有测试运行结束时,我也会收到以下错误。 在运行 PhantomJS 的 Jenkins CI 构建中: .PhantomJS 2.1.1 (Linux
当我在我的 Angular 项目中运行 ng test 命令时出现错误,它给出了这样的错误 10% building modules 1/1 modules 0 active04 12 2018 11
当我进行 Angular 4 单元测试时,其中一个使用 google maps 和 agm 包的页面显示错误: An error was thrown in afterAll\n[object Err
我是一名优秀的程序员,十分优秀!