2017-08-07 104 views
0

背景渲染組件開玩笑測試用嘲弄

我寫我們正在寫一個陣營機應用程序的一些笑話測試。在一個組件,我收到一個錯誤,

User is not defined.

所以我在組件console.log(user),並得到了輸出。然後創建了user的模擬。

用戶

module.exports = { 
    id: 'ABCDERD', 
    name: 'Boss Ninja', 
    language: 'en', 
}; 

在組件拋出的錯誤是這樣的線,

const languageName = _.findWhere(languages, { key: this.props.screenProps.user.get('language') }).value; 

所以一旦我創建模擬user錯誤清除,但後來我得到這個錯誤,

TypeError: Cannot read property 'get' of undefined

我在這裏假設臨屋區我需要爲get()創建一個模擬。但是。我不知道該怎麼稱呼它。如果有人願意告訴我如何處理爲這個組件編寫測試來渲染它,我將不勝感激。

這就是我要做的,

const tree = renderer.create(
    <ProfileScreen screenProps={user} /> 
); 

如何清除的get()錯誤沒有被定義的?

用戶對象

module.exports = { 
    id: '0052C000000gFJrQAM', 
    name: 'My Name', 
    language: 'en', 
    get: language => language, 
    value: 'English (US)', 
}; 

測試

const tree = renderer.create(
     <ProfileScreen screenProps={{ user }} /> 
); 

錯誤

TypeError: Cannot read property 'value' of undefined

回答

0

您正嘗試訪問未定義screenProps的屬性用戶。這裏用戶等於screenProps,就像你通過它一樣。你應該做的是傳遞一個對象到screenProps與屬性用戶,因爲你在代碼中調用screenProps.user。

const tree = renderer.create(
    <ProfileScreen screenProps={{ user: userMock }} /> 
); 

然後你應該添加get方法給你的對象用戶。你可以爲你的get方法返回任何你想要的。

userMock.get = (language) => { 
    return language; 
} 

或者在你的情況

module.exports = { 
    id: '0052C000000gFJrQAM', 
    name: 'my name', 
    language: 'en', 
    get: (language) => { 
     return language 
    } 
}; 
+0

在代碼中,你傳遞一個用戶screenProps。在此之前,你說你已經創建了一個用戶的模擬。你嘲笑這個用戶的地方,你必須有一個屬性得到這個用戶將是一個功能,我會告訴你 –

+0

我有更新我的答案告訴我,如果它的工作請 –

+0

你仍然有錯誤無法讀取屬性'獲取'未定義? –