我试图理解Jests的异步测试。
我的模块有一个函数,它接受一个布尔值并返回一个值的承诺。executer函数调用
const withPromises = (passes) => new Promise((resolve, reject) => {
const act = () => {
console.log(`in the timout callback, passed ${passes}`)
if(passes) resolve('something')
else reject(new Error('nothing'))
}
console.log('in the promise definition')
setTimeout(act, 50)
})
export default { withPromises }
我想用Jest来测试一下。我想我需要使用Jest提供的模拟计时器,所以我的测试脚本看起来有点像这样:
import { withPromises } from './request_something'
jest.useFakeTimers()
describe('using a promise and mock timers', () => {
afterAll(() => {
jest.runAllTimers()
})
test('gets a value, if conditions favor', () => {
expect.assertions(1)
return withPromises(true)
.then(resolved => {
expect(resolved).toBe('something')
})
})
})
无论是否调用
Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
你能解释一下我哪里出错了吗?我该怎么做才能通过考试,保证能像预期的那样解决问题吗?
对
测试中的问题是,您从不在测试中调用
你需要做的是启动承诺,然后提前计时器。
describe('using a promise and mock timers', () => {
test('gets a value, if conditions favor', () => {
expect.assertions(1)
// Keep a reference to the pending promise.
const pendingPromise = withPromises(true)
.then(resolved => {
expect(resolved).toBe('something')
})
// Activate the timer (pretend the specified time has elapsed).
jest.runAllTimers()
// Return the promise, so Jest waits for its completion and fails the
// test when the promise is rejected.
return pendingPromise
})
})
问题内容: 我有一个取决于环境变量的应用程序,例如: 我想测试例如: 可以通过节点env变量设置APP_PORT。 或某个应用程序正在使用以下命令设置的端口上运行 我如何用Jest做到这一点?我可以在每次测试之前设置这些变量,还是应该以某种方式模拟它? 问题答案: 在每次测试之前重设resetModules,然后在测试内部动态导入模块很重要: 如果您在运行Jest之前寻找一种加载env值的方法,请
null
问题内容: 我希望能够在使用jest时使用webpack别名来解析导入,并且最好参考以避免重复。 开玩笑的conf: Webpack别名: 进口: 由于某种原因,导致了问题,因此将其删除(使用别名和导入)时,可以找到但仍然无法解决。 我尝试使用jest-webpack-alias,babel-plugin-module-resolver和Jest / Webpack docs 问题答案: 这似乎已
在我的项目文件夹中,我有很多子文件夹,每个子文件夹中都有js代码和test.js文件。我想能够测试特定的文件。例如,假设在我们的项目文件夹中有“fib”文件夹: 现在,我从练习文件夹中执行jest命令: 我得到: 如果我只是开玩笑,我会做所有的测试。如果我将fib文件夹移出练习文件夹,它会按预期工作。以下是所有文件的代码: index.js: test.js: package.json: 我尝试了
试图利用本SO帖子中概述的方法。 我有以下类型的例外: 这个函数抛出它: 这项工作: 但这并不: 有人知道为什么后者不起作用吗?笑话日志: