遵循排毒模拟实施但不工作
Posted
技术标签:
【中文标题】遵循排毒模拟实施但不工作【英文标题】:Followed Detox Mock Implementation but not working 【发布时间】:2019-06-19 04:14:52 【问题描述】:我正在关注advance mocking with detox 上的排毒文档。我这样做是因为我想模拟我的 api.js 文件,该文件默认从后端服务器获取数据。我将其命名为 api.e2e.js 的虚假 api 文件将只包含返回 promise 的函数和 json 数据。不幸的是,假的 api 没有起作用。下面是我使用的库
-
react-native 0.57.8
排毒 9.1.2
我也尝试通过 Metro 和 build 命令触发 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。
【问题讨论】:
您创建了一个posts
方法,因为您的e2e
文件只有一个get
?
@Andrew 感谢您指出这一点。实际上,我只是为伪造的 api 创建了 GET 以进行测试,并将代码错误地放入问题中。已更正代码
你解决了吗?我看到同样的事情。谢谢
【参考方案1】:
在运行测试之前,您需要使用 RN_SRC_EXT=e2e.js
启动您的捆绑程序。
所以流程应该是:
运行RN_SRC_EXT=e2e.js react-native start
,然后运行detox tests
。您也可以尝试在package.json
中使用RN_SRC_EXT=e2e.js
进行排毒:
"detox":
"configurations":
"ios.sim.debug":
"binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/Glitz.app",
"build": " RN_SRC_EXT=e2e.js xcodebuild...YOUR BUILD",
"type": "ios.simulator",
"name": "iPhone X"
,
"test-runner": "jest"
【讨论】:
【参考方案2】:这就是我使模拟文件工作的方法。
-
通过重置缓存重新运行捆绑程序。
如果还是不行我会的
-
删除构建文件并重新构建整个项目。
【讨论】:
【参考方案3】:我想补充一点,我在 android 配置方面遇到了这个问题,这是因为 RN_SRC_EXT 是在 cd 之前指定的,即这确实不工作:
"build": "RN_SRC_EXT=e2e.js cd android && ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release && cd ..",
将 RN_SRC_EXT 移动到在 ./gradlew
修复问题之前运行:
"build": "cd android && RN_SRC_EXT=e2e.js ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release && cd ..",
【讨论】:
以上是关于遵循排毒模拟实施但不工作的主要内容,如果未能解决你的问题,请参考以下文章