JestJS:异步测试没有停止

时间:2018-12-27 12:09:14

标签: javascript mongodb testing jestjs

这个笑话测试有两个问题:

  1. 是否可以只定义一次(& quser) -split "`n" -- Executes quser Splits each line on newline to pass through the pipeline ? {$_ -match -- Where the current item matches the regex (?<!adminagora) -- Use a negative lookbehind to exclude adminagora .*?Disc -- match any characters as few times as possible up until Disc. \s+\d:\d{2} -- match any space character followed by -- a digit, a colon and two digits 集合,而不是在测试中进行定义?
  2. 我确实收到此错误:

    测试运行一秒钟后,Jest没有退出。 这通常意味着您的测试中没有停止异步操作。考虑使用Content运行Jest来解决此问题。

我不明白为什么我的异步代码没有停止...

--detectOpenHandles

解析器

import resolvers from 'resolvers/'
import Db from 'lib/db'
const db = new Db()

describe('Resolver', () => {
  let token

  beforeAll(async () => {
    await db.connect()
  })
  beforeEach(async () => {
    token = 'string'
    await db.dropDB()
  })
  afterAll(async () => {
    await db.connection.close()
  })

  describe('articleGetContent()', () => {
    test('should return dataset', async () => {
      // SETUP
      const Content = db.connection.collection('content')
      const docs = [{
        // some content...
      }]
      await Content.insertMany(docs)
      // EXECUTE
      const result = await resolvers.Query.articleGetContent({}, {
        id: '123,
        language: 'en'
      }, {
        token
      })
      // VERIFY
      expect.assertions(1)
      expect(result).toBeDefined()
    })
  })
})

这是我的数据库类的样子

db.js

import { articleGetContent } from '../models/article'

export default {
  Query: {
    articleGetContent: async (obj, { id }, { token }) => articleGetContent(id, token)
  }
}

1 个答案:

答案 0 :(得分:0)

second 问题有关,我希望您在github上发现了一些与此有关的问题。  通常,问题在调试日志中描述。  Jest与Promise一起工作,因此,除了已解决之外,您不应将任何异步操作保持在任何状态。

在您的情况下,您已打开数据库连接,因此您需要为数据库类实现另一种方法# A tibble: 2 x 3 Name Item Num <chr> <chr> <chr> 1 John pen a, c, b 2 Lily pencil d, h, e this link to docs将为您提供帮助,但我想您已经拥有了,因为它不是完整的db.js文件(我看到了一些自定义方法Lines1 <- " Name Age Num John 20 a, c, b Lily 19 d, h, e Jake 10 a, d" Lines2 <- " Item Num pen a, c, q, b pencil d, z, h, e apple a, c, y" T1 <- read.table(text = gsub(" +", ";", trimws(readLines(textConnection(Lines1)))), header = TRUE, sep = ";", as.is = TRUE) T2 <- read.table(text = gsub(" +", ";", trimws(readLines(textConnection(Lines2)))), header = TRUE, sep = ";", as.is = TRUE) 。这里的主要思想是将其放在disconnect钩子中:

dropDB

page底部的好例子


关于 first 问题,这实际上取决于您在方法afterAll中所执行的操作。如果您正在运行dropping collection的方法,则可以将对此集合的引用存储在外部的某个地方并使用它,因为它会自动创建新集合,但是很高兴看到此方法。


此外,您的异步测试是用错误的方式创建的,例如,您可以在《更新》中阅读更多here。您需要在测试开始时运行以下功能:afterAll(() => db.disconnect());

  

expect.assertions(number)验证一定数量的断言   在测试期间被调用。这在测试时通常很有用   异步代码,以确保在回调中声明   真的被打电话了。