将自定义启动参数传递给 detox

Posted

技术标签:

【中文标题】将自定义启动参数传递给 detox【英文标题】:Passing custom launch arguments to detox 【发布时间】:2022-01-06 14:39:19 【问题描述】:

我正在努力将启动参数传递给 detox。例如,如果我想传递几个不同的用户作为启动参数。我的初始化文件如下所示:

beforeAll(async () => 
    await device.launchApp(
        newInstance: true, 
        permissions: notifications: 'YES',
        launchArgs: 
            users: 
                user1:  email: '123@abc.com', pass: '123456' ,
                user2:  email: 'abc@123.com', pass: '654321' ,
            
        
    );
);

但是在我的测试文件中

await device.appLaunchArgs.get();

返回一个空对象。关于我做错了什么的任何想法?我是否误解了 launchArgs 的用途?

【问题讨论】:

【参考方案1】:

launchArgs 的目的是向正在测试的 app 发送参数,因为否则您无法与应用进程通信。 launchArgs 使您能够配置特定的应用程序行为,或者 (1) 根据您的测试环境传递动态参数(例如应用程序需要连接到的另一个进程的端口),或者 (2) 模拟特定测试用例的条件(例如,您编写了两个 e2e 测试,一个打开了某些功能标志,另一个关闭了它。

但是在我的测试文件中

您不能访问测试文件中的值。由于测试文件与beforeEach 在同一节点进程中运行,因此无需传递参数。事实上,您可以直接在您的测试用例中启动应用程序(使用适当的参数),这对于上面的情况(2)特别有用。

要读取应用程序中的launchArgs,您可以创建一个.e2e.jsmock file,然后使用react-native-launch-arguments 检索配置的值。其余的由您决定,但总体思路是在您的应用中使用启动参数来更改您要测试的业务逻辑或配置的某些部分。

【讨论】:

很棒的建议。帮我省了很多麻烦。

以上是关于将自定义启动参数传递给 detox的主要内容,如果未能解决你的问题,请参考以下文章

如何将自定义参数传递给事件处理程序

将自定义表单参数传递给表单集

Django 将自定义表单参数传递给 ModelFormset

Javascript:将自定义参数传递给回调函数

将自定义参数传递给 Qt/C++ 中的插槽

将自定义参数传递给 uibutton #selector swift 3