这个笑话测试有两个问题:
(& 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
集合,而不是在测试中进行定义?我确实收到此错误:
测试运行一秒钟后,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)
}
}
答案 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)验证一定数量的断言 在测试期间被调用。这在测试时通常很有用 异步代码,以确保在回调中声明 真的被打电话了。