HighChart Test React error#13

Я использую компонент High Chart, созданный с помощью React. Я должен написать тест для него, а инфраструктура - Jasmine / Karma / React TestUtils.

Я написал следующий код:

const component: React.Component<{}, {}> = TestUtils.renderIntoDocument(
            <EmailActivityBreakdown trendData={trendData}/>
        );

Я постоянно получаю сообщение об ошибке № 13 http://www.highcharts.com/errors/13 (при создании экземпляра компонента диаграммы внутри объекта "EmailActivityBreakdown").

Вещи работают нормально с компонентом (то есть в режиме без тестового случая). Как я могу создать элемент диаграммы с renderTo внутри фреймворка ReactTest для работы?

Благодарю.

1 ответ

Основной проблемой в этом случае является поддержка Кармы getElementById, High Chart использует такой код, чтобы найти идентификатор EmailActivityBreakdown:

if (Fa(a)) this.renderTo = a = A.getElementById(a);

Во время теста кармы A.getElementById(a) возврате null вот почему эта ошибка выдается. В настоящее время для тестирования High Chart в Карме вам понадобится fixture, Это пример кода:

import React from 'react'
import TestUtils from 'react-addons-test-utils'

describe('(View) EmailActivityBreakdown', function () {

    beforeEach(function () {
        const fixture = '<div id="EmailActivityBreakdown"></div>'

        document.body.insertAdjacentHTML(
           'afterbegin',
           fixture)

        TestUtils.renderIntoDocument(<EmailActivityBreakdown 
            trendData={trendData}/>)
    })

    it('chart is rendered', function () {
       expect(document.getElementById('highcharts-0').innerHTML).to.exist
    })

})
Другие вопросы по тегам