Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs WebdriverIO E2E测试-模拟在React组件内调用的函数_Reactjs_Webdriver Io - Fatal编程技术网

Reactjs WebdriverIO E2E测试-模拟在React组件内调用的函数

Reactjs WebdriverIO E2E测试-模拟在React组件内调用的函数,reactjs,webdriver-io,Reactjs,Webdriver Io,有没有一种方法可以使用WebdriverIO模拟React函数组件内部调用的函数 我需要运行E2E测试,并根据组件内部触发的逻辑验证UI,但我找不到使用WebDrivero的方法 例如,我的意图是模拟checkifuserhaspowpermissions的结果,运行E2E测试,并验证浏览器是否显示“欢迎”或“不允许” Jest提供了一个工具,我想知道WebDrivero是否也有类似的功能。在他们的文档中,有一个选项可用,但与此特定用例无关: import { checkIfUserHasPer

有没有一种方法可以使用WebdriverIO模拟React函数组件内部调用的函数

我需要运行E2E测试,并根据组件内部触发的逻辑验证UI,但我找不到使用WebDrivero的方法

例如,我的意图是模拟
checkifuserhaspowpermissions
的结果,运行E2E测试,并验证浏览器是否显示“欢迎”或“不允许”

Jest提供了一个工具,我想知道WebDrivero是否也有类似的功能。在他们的文档中,有一个选项可用,但与此特定用例无关:

import { checkIfUserHasPermissions } from '/utils';

export default function Landing() {
  return (
    <div className="App">
      {  
        checkIfUserHasPermissions() ? 
          <h1>Welcome</h1> : 
          <h1>Not allowed</h1>
      }
    </div>
  );
}
从'/utils'导入{checkIfUserHasPermissions};
导出默认函数Landing(){
返回(
{  
checkIfUserHasPermissions()?
欢迎:
不准
}
);
}
有什么想法吗


谢谢,

这实际上是可能的,但不推荐

有两种方法可供选择:

  • 通过使用
    浏览器执行一些js来更改函数。执行
    。请开发人员帮助从外部访问该函数
  • 在加载函数之前,使用
    browser.mock
    更改函数的文本内容。看

checkIfUserHasPermissions做什么?您的E2E测试不应该干扰源代码。您将如何测试浏览器是否显示“欢迎”和“不允许”?这是我的观点
checkIfUserHasPermissions
只是一个例子。从你发布的内容来看,我不知道。在一般情况下,我希望如果我没有登录就访问,或者作为一个没有访问这个特定页面的用户登录,我会看到“不允许”,如果我作为一个有访问权限的用户登录,我会看到“欢迎”。因此,E2E测试设置的一部分将是创建具有适当访问权限的用户(如果需要,还有其他没有访问权限的用户),以便测试可以使用。是的,这将是具有简单用户流的应用程序的解决方案,但在我的情况下,我需要在大型项目中测试复杂组件,找到一种在特定组件(某物)中模拟原子函数的方法将使它更容易。。。不过,谢谢你的输入,我在问题中添加了更多细节。你可以在其他级别测试这些东西,E2E测试应该像真正的用户一样锻炼你的整个系统。否则就没有什么价值了。