tobevebecalled - ожидал шпиона, но получил функцию - PullRequest
0 голосов
/ 11 марта 2020

Это тест:

it("clock should get test from testService", () => {
    let testString = `test`;
    expect(this.langService.get).toHaveBeenCalledWith(testString);
}

Это работало раньше, когда провайдеры выглядели так:

providers: [
    companyTestUtil.getMockLangServiceProvider()
]

Теперь провайдеры выглядят так:

providers: [
    ...companyTestUtil.getMockBackendDeps(),
    companyTestUtil.getTestLangServiceProvider(testLangServiceConfig),
    mockSingerServiceProvider
]

... и я начинаю получать ошибку:

Ошибка:: ожидал шпиона, но получил функцию. Использование: Ожидайте (). ToHaveBeenCalledWith (... аргументы)

Я распечатал this.langService.get, когда правильно, это выглядело как LOG: function () { ... }

Но когда есть ошибка, это началось выглядит так: LOG: function(key,count,params){ ... }

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Вы должны spyOn languageService.get метод.

it("clock should get test from testService", () => {
    spyOn(this.langService, 'get');
    let testString = `test`;
    expect(this.langService.get).toHaveBeenCalledWith(testString);
    }
0 голосов
/ 11 марта 2020

Методы, такие как toHaveBeenCalledWith, могут быть использованы только для фиктивных функций, поэтому в вашем случае вы можете поставить шпион на метод get langService, если вы измените свой тестовый пример, как это, он будет работать: -

    it("clock should get test from testService", () => {
    spyOn(this.langService, 'get');
    let testString = `test`;
    expect(this.langService.get).toHaveBeenCalledWith(testString);
    }

Предположим, что get - это метод, а не средство доступа к свойству.

...