JEST TypeError: Невозможно прочитать свойство 'json' из неопределенного - PullRequest
1 голос
/ 05 марта 2020

Я отчаянно нуждаюсь в помощи здесь. Я пытаюсь проверить функцию с шуткой, но я застрял на одном. Когда я пытаюсь смоделировать запрос на выборку, я получаю эту ошибку:

TypeError: Cannot read property 'json' of undefined

Функция, которую я пытаюсь проверить, такова:

const updateUI = async () =>{
    const res = await fetch('/sentiment');
    console.log(res);
    try {
        console.log(res.data)
        const allData = await res.json();
        console.log(allData)
        document.getElementById("polarity").innerHTML = allData.polarity;
        document.getElementById("polarityConfidence").innerHTML = allData.polarity_confidence;
        document.getElementById("subjectivity").innerHTML = allData.polarity;
        document.getElementById("subjectivityConfidence").innerHTML = allData.polarity_confidence;
        return allData;
    }catch(error){
        console.log('error')
    }
};

export { updateUI }

Тест, который я пытаюсь запустить это:

import "regenerator-runtime/runtime";
import "core-js/stable";
import "fetch-mock"

const fetchMock = require('fetch-mock');
fetchMock.config.sendAsJson = true;  \\I've tried with and without this part and I get the same error

import updateUI from './updateUI';
import { isIterable } from "core-js";

describe('updateUI', () => {
    it('can fetch', async () => {
        fetchMock.get('/sentiment', {polarity: 'polarity', polarity_confidence: 'polarity confidence', subjectivity: 'subjectivity', subjectivity_confidence: 'subjectivity confidence'});
        const res = await updateUI('/sentiment');
        const allData = await res.json();
        expect(allData.polarity).toEqual('polarity');
        expect(allData.polarity_confidence).toEqual('polarity confidence');
        expect(allData.subjectivity).toEqual('subjectivity');
        expect(allData.subjectivity_confidence).toEqual('subjectivity confidence');

    })
})

Я действительно понятия не имею, где отсюда go. Почему он не получает объект json? Это потому, что моя функция updateUI вызывает объект json в части функции try {}? Если это так, как я могу это проверить?

1 Ответ

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

Я вижу две проблемы здесь

  • В вашем тесте вы передаете строку, подобную этой const res = await updateUI('/sentiment');, которая не имеет значения, так как updateUI не принимает никаких параметров.

  • В следующей строке вы делаете res.json(), что не сработает, так как из вашего фактического метода вы только возвращаете ответ. Вы в своем тесте вам не нужно делать .json(). Это причина, по которой вы получаете неопределенное значение, поскольку нет функции json.

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