Uncaught TypeError: Observable_1.Observable.from не является функцией - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь создать модульный тест в angular-6.

import { TodosComponent } from './todos.component';
import { TodoService } from './todo.service';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/observable/from';

describe('TodosComponent', () => {
  let component: TodosComponent;
  let service: TodoService;

  beforeEach(() => {
      service = new TodoService(null);
      component = new TodosComponent(service);
  });

  it('should set todo property with the item returned from', () => {

    const todos = [1, 2, 3];
      spyOn(service, 'getTodos').and.callFake(() => {
        return Observable.from([[
            {id: 1, title: 'a'},
            {id: 2, title: 'b'},
            {id: 3, title: 'c'}
        ]]);
      });

      component.ngOnInit();

      expect(component.todos.length).toBe(todos);

  });

});

Я получаю ошибку Uncaught TypeError: Observable_1.Observable.from is not a function

"rxjs": "^6.0.0",

1 Ответ

0 голосов
/ 26 октября 2018

Как прокомментировали другие, начиная с Angular 6, который использует Rxjs6, вам придется импортировать from из 'rxjs' и использовать его напрямую, не делая Observable.from

Измените вашу реализацию на следующую:

import { TodosComponent } from './todos.component';
import { TodoService } from './todo.service';
import { Observable, from  } from 'rxjs';

describe('TodosComponent', () => {
  let component: TodosComponent;
  let service: TodoService;

  beforeEach(() => {
    service = new TodoService(null);
    component = new TodosComponent(service);
  });

  it('should set todo property with the item returned from', () => {

    const todos = [1, 2, 3];
    const data = [{
        id: 1,
        title: 'a'
      },
      {
        id: 2,
        title: 'b'
      },
      {
        id: 3,
        title: 'c'
      }
    ];
    spyOn(service, 'getTodos').and.callFake(() => {
      return from([data]);
    });

    component.ngOnInit();

    expect(component.todos.length).toBe(todos);

  });

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...