【发布时间】:2021-02-27 23:09:25
【问题描述】:
Jest 新手,所以我想了解一个我遇到的问题。我正在尝试在 Jest 中测试一个类的实现,但它抱怨我的函数“不是函数”
打字稿服务:
export class TestService {
constructor() { }
getAllData = async (): Promise<any> => {
return { id: '1', name: 'test' }
}
}
测试
import { TestService } from '../TestService';
describe('TestService', async () => {
const service = new TestService();
const res = await service.getAllData();
....
}
jest.config.ts 从“@jest/types”导入类型 {Config};
const config: Config.InitialOptions = {
roots:['<rootDir>'],
testMatch: [
'**/__tests__/**/*.+(ts|tsx|js)',
'**/?(*.)+(spec|test).+(ts|tsx|js)'
],
testPathIgnorePatterns: ['dist', 'node_modules'],
transform: {"\\.(ts|tsx)$": "ts-jest"},
verbose: true,
preset: 'ts-jest',
testEnvironment: 'node',
collectCoverage: true,
automock: true
};
export default config;
当我运行测试时,Jest 抛出一个错误,上面写着“service.getAllData 不是函数”。我可以在网上找到的所有内容都指向模拟,但我认为我不想模拟这个,因为我想测试该类的实际实现;我假设我想模拟 getAllData() 中的任何外部函数。
我有一个控制器,它能够毫无问题地调用这个函数,所以我想知道是 1) 必须以其他方式调用它还是 2) Jest 本质上需要某种模拟。
如果您有任何见解,请告诉我
谢谢!
【问题讨论】:
-
构造函数只是
constructor()或constructor() { }? -
哎呀,我的帖子中有错字。它是构造函数(){}。我会更新帖子
标签: javascript typescript unit-testing jestjs babeljs