Jestjs 当手动模拟类时,Jest监视所有es6/typescript类方法
我正在使用手动模拟来模拟typescript类,我正在实现它的所有方法,我希望jest能够自动监视它的所有方法 预期结果 我希望能够自动监视所有方法。 这意味着我在模拟手册中定义的每个方法都可以监视它,而无需对每个方法使用Jestjs 当手动模拟类时,Jest监视所有es6/typescript类方法,jestjs,ts-jest,Jestjs,Ts Jest,我正在使用手动模拟来模拟typescript类,我正在实现它的所有方法,我希望jest能够自动监视它的所有方法 预期结果 我希望能够自动监视所有方法。 这意味着我在模拟手册中定义的每个方法都可以监视它,而无需对每个方法使用jest.fn() 实际结果 TypeError:无法读取未定义的属性“calls” 代码 api/services/user-service.ts import User from "../../models/user"; export default
jest.fn()
实际结果
TypeError:无法读取未定义的属性“calls”
代码
api/services/user-service.ts
import User from "../../models/user";
export default class UserService {
getUser(): User{
return new User('testname', 'testName@tes.com');
}
}
import User from "../../models/user";
export default class UserService {
getUser(): User{
return new User('testname', 'testName@tes.com');
}
}
api/services/模拟/user-service.ts
import User from "../../models/user";
export default class UserService {
getUser(): User{
return new User('testname', 'testName@tes.com');
}
}
import User from "../../models/user";
export default class UserService {
getUser(): User{
return new User('testname', 'testName@tes.com');
}
}
/测试/用户服务.test.ts
import UserService from "../api/services/user-service";
import { mocked } from "ts-jest/utils";
jest.mock('../api/services/user-service');
it('Should get test user', ()=>{
const userService = new UserService();
expect(userService.getUser()).toEqual({name: 'testname', email: 'testName@tes.com'});
expect(mocked(userService).getUser.mock.calls.length).toBe(1);
})
/jest.config.js
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
roots: [
"<rootDir>"
],
testMatch: [
"**/__tests__/**/*.ts",
"**/?(*.)+(spec|test).ts"
],
transform: {
"^.+\\.ts$": "ts-jest"
},
};
还尝试使用ts jest中的mock()
我发现错误类型“unknown”上不存在属性“playSoundFile”。ts(2339)
假设我跳过这一行,jest不能正确识别默认导出,我得到
UserService\u 1.default不是构造函数
如果希望自动模拟其方法,请不要在\uuuuuumocks\uuuu
中模拟它。这些模拟是互斥的,手动模拟不使用Jest间谍,因此getUser不是间谍。@EstusFlask我不能在“模拟”中使用自动模拟吗?它们以这种方式停止自动模拟,因为。。。它们不再是自动的了。看见自动模拟和手动模拟可以结合使用。你想解决什么问题?你可以只在\uuumock\uuuuuuuuuuuuuuuuuuuuuuuu
@EstusFlask中提供一个带有Jest spies的有效mock,这样我就可以在\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
中使用createMockFromModule,但是我如何为它的方法提供mockImplementation。