使用量角器给出错误的端到端测试

时间:2014-06-14 08:16:17

标签: node.js angularjs jasmine protractor

我试图在angularjs.org的angular-phonecat中完成教程。在stetp三中,我用量角器进行端到端测试时出错。这是错误代码。

Using ChromeDriver directly...
Cannot read property 'matcherFn_' of undefined
[launcher] Runner Process Exited With Error Code: 1

npm ERR! angular-phonecat@0.0.0 protractor: `protractor test/protractor-conf.js`

npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the angular-phonecat@0.0.0 protractor script.
npm ERR! This is most likely a problem with the angular-phonecat package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     protractor test/protractor-conf.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls angular-phonecat
npm ERR! There is likely additional logging output above.
npm ERR! System Windows_NT 6.2.9200
npm ERR! command "c:\\Program Files\\nodejs\\node.exe" "c:\\Program Files\\nodej
s\\node_modules\\npm\\bin\\npm-cli.js" "run" "protractor"
npm ERR! cwd c:\angular-phonecat\angular-phonecat
npm ERR! node -v v0.10.28
npm ERR! npm -v 1.4.9
npm ERR! code ELIFECYCLE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     c:\angular-phonecat\angular-phonecat\npm-debug.log
npm ERR! not ok code 0

这里出了什么问题?

5 个答案:

答案 0 :(得分:3)

问题似乎是由minijasminenode的最新1.0.0版本引起的。 作为一个临时的解决方法,这个黑客工作:

  • 编辑node_modules / protractor / package.json并将minijasminenode依赖项更改为< 1.0.0,现在它的内容如下:
  

" minijasminenode":"< 1.0.0",

  • 删除minijasminenode目录:
  

rm -r node_modules / protractor / node_modules / minijasminenode

  • 重新安装所需的模块:
  

cd node_modules / protractor&& npm install

您的e2e测试现在应该运行。可能有更优雅的方式实现这一目标。

另见https://github.com/angular/protractor/issues/931

答案 1 :(得分:2)

安德鲁的回答对我有用。谢谢安德鲁。

顺便说一句,我还将'browserName':'chrome'更改为'browserName':'firefox',因为我的linux框中没有安装chrome。然后就行了。

答案 2 :(得分:0)

添加firefox使得量角器测试在我的Windows 7上运行,其中mac chrome运行正常,这里是完整的test / protractor-conf.js文件

exports.config = {
   allScriptsTimeout: 11000,

   specs: [
    'e2e/*.js'
   ],

   capabilities: {
    'browserName': 'firefox'
   },

  firefoxOnly: true,

  baseUrl: 'http://localhost:2000/',

  framework: 'jasmine',

  jasmineNodeOpts: {
    defaultTimeoutInterval: 30000
  }
};

答案 3 :(得分:0)

无论我在哪里发现哪种解决方案,我都遇到了类似的问题。当我通过XAMPP运行大部分项目时,我发现我的问题是由于配置页面上的端口设置错误。

\测试\量角器-config.js

 baseUrl: 'http://localhost:8383/',     <-- Altered to suit xampp localhost port

以前是

 baseUrl: 'http://localhost:8000/',

希望这也可以帮助其他人。

答案 4 :(得分:0)

我尝试了所有解决方案,但仍然遇到错误。将主package.json文件中的量角器版本更改为“~0.20.1”,以便它读取"protractor": "~0.20.1",并以管理员身份运行命令行为我工作。

首次运行后,会出现ChromeDriver错误。我修改了这个,只需将protractor-conf.js文件中的chromeOnly: True属性替换为驱动程序本身的完整路径,在我的例子中:chromeDriver: 'F:/Documents/Angular/angular-phonecat/node_modules/protractor/selenium/chromedriver_2.9.zip'

不过特别肯定使用早期版本是不是一个好主意。