【问题标题】:How to create a Javascript stubbed object during Rspec feature specs?如何在 Rspec 功能规范期间创建 Javascript 存根对象?
【发布时间】:2016-11-11 06:12:44
【问题描述】:

我在 rspec 中有一些当前的功能规范,目前正在测试一些 javascript 功能。在这些库中,我主要使用 Modernizr 来检测 touchevents。由于我使用的是 Poltergeist 和 PhantomJS,Modernizr.touchevents 总是返回 true,即使我希望它返回 false 以运行其他条件。

有没有办法明确地将 Modernizr.touchevents 或只是 Modernizr 一起存根?

我尝试了以下方法:

  1. Modernizr.touchevents = false
  2. Modernizr.touchevents = {}
  3. Modernizr = {}
  4. 在测试期间不要包含modernizr 库,但是我的测试失败了,因为我希望Modernizr 在那里。

即使它不是 Modernizr,你如何存根 JavaScript 库,特别是如果你在测试时不关心它的功能。

谢谢

编辑:

到目前为止,执行是否正确,Modernizr.touchevents = false;?如果我设置它,Modernizr 会重新初始化它吗?还是这是永久性的?

编辑 2:

由于我使用的是 poltergeist 和 phantomjs,Modernizr 认为它是一种触控设备。我希望能够切换它。

【问题讨论】:

    标签: javascript ruby-on-rails ruby rspec modernizr


    【解决方案1】:

    来自rspec-rails docs

    功能规格是高级测试,旨在执行 通过应用程序实现功能。他们应该驾驶 应用程序只能通过其外部接口,通常是网页。

    您的功能规范不应做任何用户无法通过 UI 做的事情(例如:输入 URL、点击链接等)。模拟/存根 Javascript 不适合这种测试。

    【讨论】:

    • 由于我使用的是 poltergeist 和 phantomjs,Modernizr 认为它是一个触控设备。我希望能够切换它。
    • 我不熟悉 poltergeist,但您似乎应该能够将 User-Agent 设置为一个可以使其作为非触摸设备工作的值。
    猜你喜欢
    • 2014-04-13
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-10
    相关资源
    最近更新 更多