【发布时间】:2018-06-04 20:53:32
【问题描述】:
ng test之后
预期输出:我在 x 次测试中通过/失败。
实际输出:
ERROR in src/app/todo-data.service.spec.ts(19,45): error TS2345: Argument of type 'Todo[]' is not assignable to parameter of type 'Expected<Observable<Todo[]>>'.
Type 'Todo[]' is not assignable to type 'ObjectContaining<Observable<Todo[]>>'.
Property 'jasmineMatches' is missing in type 'Todo[]'.
在我的 todo 类中,我没有 jasminematches 属性,但这可能不是根本问题。
todo.ts:
export class Todo {
id: number;
title: string = '';
complete: boolean = false;
constructor(values: Object = {}) {
Object.assign(this, values);
}
}
todo-data.service.spec.ts
import {TestBed, async, inject} from '@angular/core/testing';
import {Todo} from './todo';
import {TodoDataService} from './todo-data.service';
...
describe('#getAllTodos()', () => {
it('should return an empty array by default', inject([TodoDataService],
(service: TodoDataService) => {
expect(service.getAllTodos()).toEqual(<Todo[]>[]);
}));
...
todo-data.service.ts
import { Injectable } from '@angular/core';
import { Todo } from './todo';
import { ApiService } from './api.service';
import { Observable } from 'rxjs';
...
export class TodoDataService {
constructor(private api: ApiService) { }
getAllTodos(): Observable<Todo[]> {
return this.api.getAllTodos();
}
...
请告知如何开始解构此错误以编写正确的测试。
【问题讨论】:
标签: angular testing jasmine-node