2016-11-05 2 views
1

Im пытается проверить мой компонент, который делает запрос getJSON в методе жизненного цикла componentWillMount. Он имеет следующий код:props.params in Enzyme test

api.getJSON(`users/${this.props.params.id}`) 
      .done((result) => { 
       this.setState({user: result}); 
      }); 

Как вы можете видеть, он использует props.params.id для запроса. Проблема, которая у меня есть, находится в моем тестировании. Когда я запускаю npm test, он возвращает не может прочитать свойство неопределенного, неопределенного, являющегося props.params. Как я могу получить этот объект в ферменте?

ответ

1

Это один из способов, используя фермент с мокко:
- Установить jsdomnpm install --save-dev --save-exact jsdom jsdom-global
- Загрузить jsdom на своем до утверждения (внутри описания)

before(function() { 
     this.jsdom = require('jsdom-global')() 
    }) 

    after(function() { 
     this.jsdom() 
    }) 


- Сейчас в вашем использовании тест mount примерно:

const someData = {data1:'yyyyyy'}; 
const wrapper = mount(<YourComponent yourProp={someData} />); 


В вашем случае «yourProp» должны быть параметрами, таким образом вы можете передавать данные в свои объекты.
Надеюсь, что эта помощь.

+0

Также вам нужно иметь mocha.opts внутри тестовой папки (test \ mocha.ops) с этим: -r jsdom-global/register. И назовите мокко с параметром --require (mocha --require). – Hosar

+0

Спасибо, что решили! – Jake