在测试运行之前,如何在html上定义的变量存根

时间:2019-05-28 13:53:43

标签: cypress

在我的index.html中,我正在创建小部件的实例。我想能够在测试运行之前对options进行存根,以尝试不同的初始化。

<html>
<body>
  ...
  <script>
    document.addEventListener('DOMContentLoaded', function() {
      var options = {
        input_element_id: 'inputid',
        list: ['a', 'b', 'c', 'd'],
        app_id: 'xxx'
        api_key: 'xxx'
      }
      var widget = new MyWidget(options)

      widget.start()
    })
  </script>
</body>
</html>

我该如何使用Cypress?

1 个答案:

答案 0 :(得分:0)

我发现的最佳方法是使用window对象将变量公开给cypress。然后,在测试中我可以操纵它们。

<script>
    document.addEventListener('DOMContentLoaded', function() {
      var options = {...}
      var widget = new MyWidget(options)

      if (window.Cypress) {
        window.options = options
        window.widget = widget
      }

      widget.start()
    })
</script>

然后在我的测试中,我可以在beforeEach()或我需要的地方运行它

  cy.window()
    .then(win => {
      win.options['search_on_slash'] = false
    })