How do i automatically test an openui5 app with qunit and phantomjs? (Error: found in negative cache)

时间:2015-10-29 16:00:12

标签: phantomjs qunit sapui5 grunt-contrib-qunit

We have an OpenUI5 app with QUnit tests. We tried to automate the tests with grunt-contrib-qunit, but when grunt-contrib-qunit starts our qunittests.html file in phantomjs, it gives the following error:

>>  Error: found in negative cache: 'sap/ui/core/Core.js' from TODO???/sap/ui/core/Core: Error: found in negative cache: 'sap/ui/core/Component.js' from TODO???/sap/ui/core/Component: Error: found in nega...

The same file with the QUnit tests works fine in chrome.

In order to sort out that our environment causes the issue, i did the following:

I created a Gruntfile.js with nothing else then grunt-php and grunt-contrib-qunit. Then i downloaded the code from OpenUI5 Walkthrough Step 35. I started the Walkthrough app and setup grunt-contrib-qunit like this:

qunit: {
  all: {
    options: {
      urls: [
        'http://localhost:1337/test/integration/opaTests.qunit.html'
      ]
    }
  }
},

Same issue. "Negative cache".


We tested it with other grunt-implementations of qunit, with karma-qunit, CasperJS and others.

1 个答案:

答案 0 :(得分:2)

我在尝试自动测试ui5应用时遇到了同样的问题。 我不确定是什么导致了这个问题,但它似乎与grunt-contrib-qunit使用的phantomjs版本(编写时的1.9.15)有关。 所以我决定采用以下DIY解决方法:

首先下载phantomjs 2.0并手动安装,即创建别名或将其放入路径中。 Phantomjs在下载过程中包含了许多非常有用的示例,其中一个是run-qunit.js。 如果在项目根目录中复制它,则可以使用命令(打开命令提示符)phantomjs run-qunit.js http://localhost:1337/test/integration/opaTests.qunit.html来运行测试。 请注意,您需要在执行此操作之前启动开发服务器,因为您需要有一个要测试的URL。我还需要在run-qunit.js中增加默认超时,OPA5测试需要很长时间。试试这个号码。

grunt-shell的帮助下,您可以将此命令集成到您的grunt工作流程中。 我为我的qunit测试创建了一个grunt testunit任务,为我的OPA5集成测试创建了一个单独的grunt testintegration任务。

希望有所帮助,如果您在使用此设置时遇到任何问题,请询问。它对我有用!

未来读者的提示:当grunt-contrib-qunit使用phantomjs 2.0.0时,可能不需要此解决方法。