Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jestjs 当手动模拟类时,Jest监视所有es6/typescript类方法_Jestjs_Ts Jest - Fatal编程技术网

Jestjs 当手动模拟类时,Jest监视所有es6/typescript类方法

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

我正在使用手动模拟来模拟typescript类,我正在实现它的所有方法,我希望jest能够自动监视它的所有方法

预期结果 我希望能够自动监视所有方法。 这意味着我在模拟手册中定义的每个方法都可以监视它,而无需对每个方法使用
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。