Модульное тестирование Typescript / React с импортом SVG с жасмином - PullRequest
0 голосов
/ 22 октября 2018

Я использую Jasmine для написания модульных тестов для проекта Typescript / React.У меня проблемы, потому что в одном из файлов TSX я импортирую SVG.Я запускаю свои модульные тесты с командой ts-node node_modules/.bin/jasmine, и когда ts-node отправляется для переноса файлов .ts, происходит сбой при ошибке Cannot find module './demo.svg'.

Я вполне уверен, что если я соберу свой проект(Я использую webpack), тогда я мог бы запускать тесты для этой сборки, но я бы предпочел использовать исходный код, если это возможно, и писать свои тесты также на машинописном тексте.Чего мне не хватает?Есть ли способ сделать это?

Вот мой пример кода:

import * as demoImg from './demo.svg'

const demo = {
   generate: (records: ForcedRecord[], groupings: Group[], params:any) => {

   return (
      <div>
         <img src={demoImg}/>
      </div>
   )
}

export default demo

Вот мой (сокращенный и упрощенный) пример теста:

import demoCmp from '../../src/processors/demo/demo'

describe('demo', () => {

    let result

    beforeEach(() => {
        result = demoCmp.generate([], [], {})
    })

    it('should return a non-null result', () => {
        expect(result).not.toBeUndefined()
    })
})

1 Ответ

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

Я предполагаю, что вы используете загрузчик Webpack для "импорта" файла SVG в вашей сборке Webpack.Когда вы запускаете свои тесты для источника с помощью ts-node, импорт не будет работать, если вы не используете ловушку Node require, которая обеспечивает функциональность, эквивалентную функциональности вашего загрузчика Webpack;Я не знаю, существует ли такая вещь.Как вы уже упоминали, возможно, самый простой вариант - запустить тесты для пакета Webpack.

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