遵循排毒模拟实施,但不起作用

时间:2019-01-25 10:29:08

标签: react-native detox

我正在关注advance mocking with detox上的Detox文档。我这样做是因为我想模拟我的api.js文件,该文件默认情况下是从后端服务器获取数据。我将其命名为api.e2e.js的虚假api文件将只包含返回json数据承诺的函数。不幸的是,伪造的api无法启动。下面是我使用的库

  1. 本机0.57.8
  2. 排毒9.1.2

我也尝试通过Metro触发env变量并生成命令,但是没有运气。

action / restaurants.js

import Api from '../api';

export const getRestaurants = () => {
    return (dispatch) => {
        dispatch(gettingRestaurants());
        Api.get.restaurants()
            .then(resJson => {
                console.log('get response', resJson);
                dispatch(getRestrauntsSucces(resJson));
            }).catch(error => {
                console.log('response error', error)
                dispatch(getRestaurantsFailure(error));
            })
    }
}

api.e2e.js

export default {
    get: {
        restaurants: () => {
            console.log('you are in fake api');
            return new Promise((resolve, reject) => {
                resolve( [
                    {
                        id: 1,
                        name: 'Test Shop',
                        location: 'Johore',
                        category: 'Johore',
                        user_id: 1
                    }
                ])
            })
        },


    }

}

rn-cli.config.js

module.exports = {
    getSourceExts: () => process.env.RN_SRC_EXT ? 
                         process.env.RN_SRC_EXT.split(',') : []
   };

预计将调用假api,但仍会调用原始api。

2 个答案:

答案 0 :(得分:1)

在运行测试之前,您需要使用"That's your best"启动捆绑器。

因此流程应为: 运行RN_SRC_EXT=e2e.js,然后运行RN_SRC_EXT=e2e.js react-native start。您也可以尝试在detox tests中使用RN_SRC_EXT=e2e.js排毒:

package.json

答案 1 :(得分:0)

这就是我要使模拟文件正常工作的方式。

  1. 通过重置缓存重新运行捆绑器。

如果还不能,我会

  1. 删除构建文件并重新构建整个项目。