【问题标题】:Unit test of combo component组合组件的单元测试
【发布时间】:2023-03-15 08:26:01
【问题描述】:

我已经在 angular2 中编写了一个组合组件并为其编写了单元测试代码。由于我是初学者,所以我无法测试创建的组件。所以请帮助我解决这个问题。

import { Component, Input, Output, EventEmitter } from "@angular/core";
import { ComboInterface } from './ComboInterface';

@Component({
  moduleId: module.id,
  selector: 'combo-compo',
  template: `
      <select name="theme" class="form-control" [ngModel]="selectedObject" (ngModelChange)="onChangeObj($event)">
        <option [ngValue]="theme" *ngFor="let theme of dataObject" >{{theme.value}}</option>
      </select>
            `
})

export class ComboComponent {
  selectedObject: ComboInterface;
  @Input() dataObject: Array<ComboInterface>;
  @Output() onComboChange = new EventEmitter();

  onChangeObj(newObj: ComboInterface) {
    this.selectedObject = newObj;
    this.onComboChange.emit(this.selectedObject);
  }

}

我已经为它编写了下面给出的单元测试代码

describe('ComboComponent Unit Test', () => {
    let comp: ComboComponent;
    let fixture: ComponentFixture<ComboComponent>;
    let de: DebugElement;
    let el: HTMLElement;

    beforeEach(() => {
        TestBed.configureTestingModule({
            declarations: [ComboComponent], // declare the test component
            imports: [ReactiveFormsModule, FormsModule]
        });
        fixture = TestBed.createComponent(ComboComponent);
        comp = fixture.componentInstance;

    });

    it('should create ComboComponent', () => expect(comp).toBeDefined());

    it('should create a ComboComponent with values', () => {
        comp.dataObject = [
            {
                'value': 'Victoria Cantrell test',
                'key': '0839',
            }, {
                'value': 'Pearl Crosby Test',
                'key': '8262'
            }, {
                'value': 'Colette Foley Test',
                'key': '8968'
            }
        ];
                comp.onChangeObj(comp.dataObject[0]);
    });

});

通过运行npm test,代码运行良好,但我如何测试创建的组件?

【问题讨论】:

    标签: angular unit-testing typescript karma-jasmine


    【解决方案1】:

    测试使用断言。您可以使用expect 进行断言。

    例如,您希望您的组件发出一个值,对吗?

    所以 oyu 必须在其上放置 间谍:为方便起见,间谍是一种会监视您的函数以查看它是否被调用的东西

    一个示例测试是:

    it('onChangeObj should emit an event', () => {
        comp.dataObject = [/* data */];
        let spy = spyOn(component.onComboChange, 'emit');
        comp.onChangeObj(/* anything you want, even null */);
        expect(spy).toHaveBeenCalled();
    });
    

    这只是测试的一部分。在expect() 上查看您的 IDE 的自动完成,看看您可以用它做什么,之后您将了解如何进行测试!

    【讨论】:

    • 但是数据没有显示在组合组件中??
    • 显示的数据是端到端测试。在这里,您正在进行单元测试。您必须测试您的功能是否有效。在端到端的测试中,你会测试它是否正确显示
    • 不,我不会。我是来帮忙的,不是为了让你工作。想要教程可以找plenty of resources online
    • k...我会通过教程找到它。非常感谢您宝贵的时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 2019-04-18
    • 2011-10-23
    • 2016-10-19
    • 1970-01-01
    • 2018-01-01
    相关资源
    最近更新 更多