2016-11-05 62 views
1

我試圖測試在componentWillMount生命週期方法中生成getJSON請求的組件。它有以下代碼:props.params在酶測試中

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

正如你所看到的,它使用props.params.id來提出請求。這個問題在我的測試中。當我運行npm test時,它返回無法讀取undefined的屬性,undefined是props.params。我怎樣才能得到酶的這個對象?

回答

1

這是使用酶與摩卡的一種方式:
- 安裝jsdomnpm install --save-dev --save-exact jsdom jsdom-global
- 加載在你之前聲明jsdom(內描述)

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

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


- 現在,在您的測試使用安裝像這樣:

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


在你的情況「yourProp」應該是參數,可以通過這種方式可以將數據傳遞到您的屬性。
希望得到這個幫助。

+0

此外,你需要喲有一個mocha.opts裏面的測試文件夾(test \ mocha.ops)用這個:-r jsdom-global/register。並且 - 請求摩卡 - 請求選項(摩卡 - 必需)。 – Hosar

+0

謝謝你解決了! – Jake