我收到当前错误
Cannot read property 'indexOf' of undefined
at Function.isPendingSpecException
我认为问题归结为这行代码
TokenRepositoryMock.findTokenRecordByToken.mockImplementationOnce(
async () => null,
)
如果我将该代码更改为此,我将不再收到错误。
TokenRepositoryMock.findTokenRecordByToken.mockImplementationOnce(
async () => ValidToken,
)
我需要这个函数返回 null 以便我可以测试失败的代码。 这是我正在测试的方法
public static validate(): Middleware {
return async (ctx: Context, next: Next): Promise<void> => {
const token = ctx.data.get('token')
const tokenRecord: AccountToken | null = await TokenRepository.findTokenRecordByToken(
token,
)
if (!tokenRecord) {
ctx.status = HttpStatus.UNAUTHORIZED
throw new InvalidTokenError()
}
ctx.data.set('token', tokenRecord)
await next()
}
}
我在网上看到一些帖子说这可能是 Intellij IDEA (https://stackoverflow.com/a/54425293/9431766) 和 jest 24.0.0 的错误,但是,我正在运行 26.6.3 并且还通过 PhpStorm 和命令运行它行,但仍然出现相同的错误。
有关如何解决此问题的任何建议?
答案 0 :(得分:0)
好的,我确实在我的代码中找到了修复它的东西。
我正在从我们拥有的外部模块导入 TokenRepository
。
import { TokenRepository } from '@company/library'
然后嘲笑它我正在这样做
jest.mock('@company/library')
const TokenRepositoryMock = mocked(TokenRepository, true)
通过更新 jest.mock
路径,它以某种方式开始正常工作。
即。
jest.mock('@company/library/dist/token/TokenRepository')
奇怪的是,这又开始起作用了