【问题标题】:Angular 10: Unit Test of service "spec has no expectations"Angular 10:服务“规范没有期望”的单元测试
【发布时间】:2020-10-26 07:43:46
【问题描述】:

我想对一个非常简单的服务进行单元测试。

import { Injectable } from '@angular/core';
import { Step } from './step';

@Injectable({
  providedIn: 'root'
})
export class StepService {

  constructor() { }

  setStepDone(setDoneStep: Step) {
    setDoneStep.done = !setDoneStep.done;
  }
}

我的测试如下所示:

import { TestBed } from '@angular/core/testing';
import { StepService } from './step.service';
import { Step } from './step';

describe('StepService', () => {
  let service: StepService;

  beforeEach(() => {
    TestBed.configureTestingModule({});
    service = TestBed.inject(StepService);
  });

  it('should be created', () => {
    expect(service).toBeTruthy();
  });

  it('should set the done property of a step to true when done was false and setStepDone was called once', () => {
    let step: Step = { description: "test", done: false };
    service.setStepDone(step);
    expect(step.done).toBeTrue;
  });

  it('should set the done property of a step to false when done was false and setStepDone was called twice', (done) => {
    let step: Step = { description: "test", done: false };
    service.setStepDone(step);
    service.setStepDone(step);
    expect(step.done).toBeFalse;
    done();
  });
});

不幸的是,在执行测试时它说:

StepService 应该创建
当 done 为 false 并且 setStepDone 被调用一次时,SPEC 没有期望应将步骤的 done 属性设置为 true
当 done 为 false 并且 setStepDone 被调用两次时,SPEC 没有期望应该将步骤的 done 属性设置为 false

所以“应该创建”似乎可行,但其他两个没有期望,尽管我预计step.done 是真还是假。

为什么它不能识别expect(...) 语句?

提前致谢

【问题讨论】:

    标签: angular typescript jasmine karma-jasmine


    【解决方案1】:

    tobeTrue是一个函数,所以需要加括号才能正确调用(和toBeFalse一样)

    expect(step.done).toBeTrue();
    
    

    测试现在将找到一个可测试的期望。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-10
      • 2021-05-09
      • 1970-01-01
      • 1970-01-01
      • 2017-06-28
      • 2019-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多