开玩笑的 jasmine.createSpyObj() 相当于什么?

Ric*_*d77 9 karma-jasmine jestjs

Jest 中的以下代码等效于什么?

let mockHeroService = jasmine.createSpyObj(['getHeros', 'addHero', 'deleteHero']);
Run Code Online (Sandbox Code Playgroud)

我想用它作为测试床。

TestBed.configureTestingModule({
  providers: [
    {
       provide: HeroService,
       useValue: mockHeroService         
    }
  ]
});
Run Code Online (Sandbox Code Playgroud)

我的理解是,通过玩笑,您只能监视服务的一种方法,例如

const spy = jest.spyOn(HeroService, 'getHeros');
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助

Est*_*ask 8

没有等效的,因为它没有太多用途。Jest 专注于模块化 JavaScript 并使用jest.mock和生成自动模拟(存根) jest.createMockFromModule

自动模拟的问题在于,它们会产生一组未指定的函数,这些函数的行为与原始函数不同,并且可能使使用它们的代码无法正确工作或静默失败。

没有实现的模拟可以定义为:

let mockHeroService = { getHeros: jest.fn(), ... };
Run Code Online (Sandbox Code Playgroud)

大多数时候,预计会有一些实施:

let mockHeroService = { getHeros: jest.fn().mockReturnValue(...), ... };
Run Code Online (Sandbox Code Playgroud)