如何在Rspec特性规范期间创建Javascript存根对象?

时间:2016-07-08 15:42:05

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

我在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在那里。
  5. 即使它不是Modernizr,如何在测试时不关心它的功能,如何存储javascript库。

    由于

    编辑:

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

    编辑2:

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

1 个答案:

答案 0 :(得分:0)

From the rspec-rails docs设计的调用函数:

  

功能规格是用于执行切片的高级测试   通过应用程序的功能。他们应该开车   应用程序只通过其外部接口,通常是网页。

您的功能规范不应该执行用户无法通过UI执行的任何操作(例如:键入URL,单击链接等)。模拟/存根Javascript不适合这种测试。