如何使用qunit和phantomjs自动测试openui5应用程序?(错误:在负缓存中找到)

如何使用qunit和phantomjs自动测试openui5应用程序?(错误:在负缓存中找到),phantomjs,qunit,sapui5,grunt-contrib-qunit,Phantomjs,Qunit,Sapui5,Grunt Contrib Qunit,我们有一个带有QUnit测试的OpenUI5应用程序。我们尝试使用grunt contrib qunit自动执行测试,但当grunt contrib qunit在phantomjs中启动我们的qunittests.html文件时,会出现以下错误: >> Error: found in negative cache: 'sap/ui/core/Core.js' from TODO???/sap/ui/core/Core: Error: found in negative cache:

我们有一个带有QUnit测试的OpenUI5应用程序。我们尝试使用grunt contrib qunit自动执行测试,但当grunt contrib qunit在phantomjs中启动我们的qunittests.html文件时,会出现以下错误:

>>  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...
与QUnit测试相同的文件在chrome中工作良好

为了查明是我们的环境造成了这个问题,我做了以下工作:

我创建了一个Gruntfile.js,没有其他任何东西,然后grunt phpgrunt contrib qunit。然后我从下载了代码。我启动了演练应用程序,并按如下方式设置grunt contrib qunit:

qunit: {
  all: {
    options: {
      urls: [
        'http://localhost:1337/test/integration/opaTests.qunit.html'
      ]
    }
  }
},
同样的问题。“负缓存”



我们用qunit的其他grunt实现、karma qunit、CasperJS等进行了测试。

我在尝试自动测试ui5应用程序时遇到了同样的问题。 我不确定是什么导致了这个问题,但它似乎与grunt contrib qunit使用的phantomjs版本(撰写本文时为1.9.15)有关。 因此,我选择了以下DIY解决方案:

首先手动下载并安装它,这意味着创建一个别名,或者将其放在您的路径中。 Phantomjs在其下载中包含了大量非常有用的示例,其中一个是。 如果将其复制到项目根目录中,则可以使用命令(打开命令提示符)
phantomjs run-qunit.jshttp://localhost:1337/test/integration/opaTests.qunit.html
以运行测试。 请注意,在这样做之前,您需要启动一个开发服务器,因为您需要有一个url来进行测试。我还需要将run-qunit.js中的默认超时增加一点,OPA5测试需要很长时间。试试这个数字

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

希望这对您有所帮助,请询问您是否面临此设置的任何问题。它确实对我有用

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