Ошибка типа: jasmine.createSpyObj не является функцией - PullRequest
0 голосов
/ 05 сентября 2018

Мне нужно выполнить модульное тестирование метода компонента, который не возвращает Promise, но внутренне вызывает метод в сервисе, который делает это, и поэтому выполнение модульного теста немедленно возвращается к блоку 'it'. Это приводит к объектам, на которые я должен смотреть, чтобы определенные значения еще не были назначены. В угловой документации предполагается, что я использую шпионский объект . Кажется, это именно то, что мне нужно. К сожалению, даже самые базовые модульные тесты не позволят мне создать объект Spy.

следующий код ...

describe('my unit test', () => {

    var myService;

    beforeEach(() => {
        myService = jasmine.createSpyObj('myService', ['myMethodOne', 'myMethodTwo']);
        myService.myMethodOne();
    });

    it("my service test", () => {
        expect(myService.myMethodOne).toBeDefined();
        expect(myService.myMethodOne).toHaveBeenCalled();
    });

});

Сбой с ...

>npm test

> iwp-app@0.0.0 test D:\Users\brock\Source
> jest

 FAIL  component.spec.ts
  my unit test
    × my service test (41ms)

  ● my unit test › my service test

    TypeError: jasmine.createSpyObj is not a function

      at component.spec.ts:29:25
      at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (node_modules/zone.js/dist/zone.js:388:26)
      at ProxyZoneSpec.Object.<anonymous>.ProxyZoneSpec.onInvoke (node_modules/zone.js/dist/proxy.js:128:39)
      at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (node_modules/zone.js/dist/zone.js:387:32)
      at Zone.Object.<anonymous>.Zone.run (node_modules/zone.js/dist/zone.js:138:43)
      at Object.testBody.length (node_modules/jest-zone-patch/index.js:50:27)

  ● my unit test › my service test

    TypeError: Cannot read property 'myMethodOne' of undefined

      at create-template.component.spec.ts:34:22
      at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (node_modules/zone.js/dist/zone.js:388:26)
      at ProxyZoneSpec.Object.<anonymous>.ProxyZoneSpec.onInvoke (node_modules/zone.js/dist/proxy.js:128:39)
      at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (node_modules/zone.js/dist/zone.js:387:32)
      at Zone.Object.<anonymous>.Zone.run (node_modules/zone.js/dist/zone.js:138:43)
      at Object.testBody.length (node_modules/jest-zone-patch/index.js:50:27)

Test Suites: 1 failed, 1 total
Tests:       1 failed, 1 total
Snapshots:   0 total
Time:        4.36s
Ran all test suites.
npm ERR! Test failed.  See above for more details.

1 Ответ

0 голосов
/ 05 сентября 2018

Jest не имеет функции с именем createSpyObj (), как у jasmine по умолчанию, перейдите по этой ссылке Jest createSpyObj , которая представляет собой пользовательскую функцию createSpyObj в jest, или просто переключитесь на jasmine вместо

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