如何使用jest js在Angular中创建Spyobj?

如何使用jest js在Angular中创建Spyobj?,angular,jestjs,angular10,Angular,Jestjs,Angular10,我用玩笑来做角度测试 在我的场景中,我必须从父级测试子组件。在这里,我使用父组件中的@viewchild访问子组件方法和属性 import { Component } from '@angular/core'; @Component({ template: `<div><\div>` }) export class ChildComponent { public childMethod() {

我用玩笑来做角度测试

在我的场景中,我必须从父级测试子组件。在这里,我使用父组件中的@viewchild访问子组件方法和属性

import { Component } from '@angular/core';

    @Component({
        template: `<div><\div>`
    })
    export class ChildComponent {
    
        public childMethod() {
            ...
        }
    }


import { Component, ViewChild } from '@angular/core';
import { ChildComponent } from 'child.component';

@Component({
    template: ``
})
export class ParentComponent {

    @ViewChild('child')
    public child: ChildComponent;

    public parentMethod() {
        this.child.childMethod();
    }
}
(正是我想要的 如何在jest中进行相同操作。我没有找到任何内容。如何监视子组件

谁能告诉我吗


提前感谢

Jest没有此实用程序功能。它需要手动编写,如果需要,它可以提供类型安全性,而Jasmine
createSpyObj
在设计上无法做到:

const mockChildComponent: ChildComponent = {
  childMethod: jest.fn(...)
}
有一些自动模拟功能可以为提供相同功能的现有模块提供虚拟模拟对象,尽管这可能会产生意外的结果,因为它们背后隐藏着未记录的魔力:

const { ChildComponent: MockChildComponent } = jest.createMockFromModule('child.component')
mockChildComponent = new MockChildComponent()

你链接到的帖子展示了一个不应该进行单元测试的人为例子。它测试任意的实现细节,没有提供任何价值(一个极为常见的问题)。发布您正在处理的代码,并描述您试图测试的内容。否则,您将得到一个答案,帮助您编写一个低值、维护量大的单元测试。在使用angular时,应该在实用程序列表中处于较高的位置。@Adam请查找更新的帖子。。这不是您的代码。按要求回答问题将可能会导致编写一个非常低值的单元测试,我想指导您如何编写一个好的单元测试,因为这是一个非常罕见的能力描述一下你想要测试什么,我可以帮你解决。一般来说,在Angular中,事情是通过改变输入或从输出中发出事件来发生的。这些(同样,通常)是你在单元测试(组件)设置(或模拟)中应该做的唯一事情直接调用方法通常是测试实现细节的标志,结果是没有意义的(或低值的)还有脆性测试。有很多方法可以在角度上沟通父母和孩子,角度框架提供组件@viewchild的功能,然后你怎么说脆性测试,如果你不想回答要求你不要争论,现在我清楚地说明我到底想要什么,
const { ChildComponent: MockChildComponent } = jest.createMockFromModule('child.component')
mockChildComponent = new MockChildComponent()