2017-08-07 74 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

你仍然有错误无法读取属性'获取'未定义? –