TypeError:无法读取未定义的属性“ SHORT”

时间:2018-08-21 10:23:27

标签: unit-testing react-native jestjs enzyme react-native-ios

我正在编写关于使用笑话和酶反应本机应用程序的单元测试。当我尝试运行测试用例时,出现以下错误:

  

●测试套件无法运行

     

TypeError:无法读取未定义的属性“ SHORT”

     

at Object。 (node_modules / react-native-simple-toast / index.js:7:23)     在对象。 (src / client / components / Catalogue / events.js:10:29)     在对象。 (测试 /events-test.js:5:13)     在Generator.next()     在新的Promise()     在Generator.next()     

该错误是由于从react-native-simple-toast导入Toast引起的。没有此导入,测试运行正常,但是我需要在组件中使用react-native-simple-toast,因此无法删除它。以某种方式,我需要在组件中使用react-native-simple-toast进行测试:

import React, { Component } from 'react'
import { Platform, ActivityIndicator, Linking, Dimensions, View, Text, 
TouchableOpacity, TextInput, StyleSheet, Keyboard, Image, 
KeyboardAvoidingView } from 'react-native'
import { Container, Header, Card, CardItem, Content, Left, Right, Body, 
Title, Icon, Button } from 'native-base';
import IconIOSback from 'react-native-vector-icons/Ionicons';
import IconMenu from 'react-native-vector-icons/MaterialIcons';
import axios from 'axios';
import SERVER_URL from '../../config';
import { Col, Row, Grid } from 'react-native-easy-grid';
import Toast from 'react-native-simple-toast';   //this causes the error

请帮助我解决此问题。

3 个答案:

答案 0 :(得分:0)

安装

npm install react-native-simple-toast --save

安装后。

react-native link

然后在node_modules文件夹中检查是否添加了此模块

重新启动项目并再次运行

这里是Discussion

答案 1 :(得分:0)

解决此问题的方法是模拟属性SHORT。 创建一个测试设置文件,例如setup.js,并包含以下模拟文件

jest.mock('react-native-simple-toast', () => ({
  SHORT: jest.fn(),
}));

确保将此文件添加到package.json配置下的jest中,即

"jest": 
.....
"setupFiles": [
      "/setup.js" // location of your setup.js file
    ]

答案 2 :(得分:0)

请确保在安装软件包后已运行cd ios && pod install

这可能是由于现有缓存所致。

  • 在模拟器中关闭应用程序
  • 使用npm run ios
  • 重新运行