Protractor 使用量角器框架进行测试会产生这种错误
你好,朋友,我正在使用量角器和cucumber js测试angular 2应用程序,但它给了我这个错误,我尝试了几种解决方案,但没有人能解决我的问题。如果你知道任何解决方案,那就太好了,谢谢你 [1] 未处理的拒绝类型错误:this.registerHandler不是函数 [1] 在Object.registerHandlers(/home/ca1/webstromprojects/DME/node_modules/dragrator cumber framework/lib/resultsapturer.js:16:8) [1] at/home/ca1/webstromprojects/DME/node_modules/dragrator cumber framework/lib/resultsapturer.js:6:22 [1] 在Object.defineSupportCode(/home/ca1/webstorprojects/DME/node\u modules/cucumber/src/support\u code\u library\u builder/index.js:20:9) [1] 反对。(/home/ca1/webstromprojects/DME/node_modules/framework/lib/resultsapturer.js:5:12) [1] 在模块处编译(Module.js:570:32) [1] 在Object.Module.\u extensions..js(Module.js:579:10) [1] 在Module.load(Module.js:487:32) [1] 在tryModuleLoad时(module.js:446:12) [1] 在Function.Module.\u加载(Module.js:438:3) [1] at Module.require(Module.js:497:17) [1] 根据需要(内部/module.js:20:19) [1] at/home/ca1/websprojects/DME/node_modules/cucumber/src/cli/index.js:61:42 [1] at Array.forEach(本机) [1] 在Cli.getsupportcodebrary(/home/ca1/webstorprojects/DME/node_modules/cucumber/src/Cli/index.js:61:22) [1] 在Cli。(/home/ca1/websprojects/DME/node_modules/cucumber/src/cli/index.js:76:37) [1] 在下一个(本地) [1] [17:30:50]E/launcher-错误:launcher退出,剩余1个任务 这是我的package.jsonProtractor 使用量角器框架进行测试会产生这种错误,protractor,cucumber,cucumber-jvm,cucumberjs,cucumber-junit,Protractor,Cucumber,Cucumber Jvm,Cucumberjs,Cucumber Junit,你好,朋友,我正在使用量角器和cucumber js测试angular 2应用程序,但它给了我这个错误,我尝试了几种解决方案,但没有人能解决我的问题。如果你知道任何解决方案,那就太好了,谢谢你 [1] 未处理的拒绝类型错误:this.registerHandler不是函数 [1] 在Object.registerHandlers(/home/ca1/webstromprojects/DME/node_modules/dragrator cumber framework/lib/resultsap
{
"name": "dpt-angular",
"version": "1.0.0",
"description": "QuickStart package.json from the documentation, supplemented with testing support",
"scripts": {
"start": "concurrently \"npm run tsc:w\" \"npm run lite\" ",
"e2e": "concurrently \"http-server -s\" \"protractor protractor.config.js\" --kill-others --success first",
"lint": "tslint ./app/**/*.ts -t verbose",
"lite": "lite-server",
"pree2e": "webdriver-manager update",
"test": "concurrently \"tsc -w\" \"karma start karma.conf.js\"",
"test-once": "karma start karma.conf.js --single-run",
"tsc": "tsc",
"tsc:w": "tsc -w"
},
"keywords": [],
"author": "",
"license": "MIT",
"dependencies": {
"@angular/common": "~2.4.0",
"@angular/compiler": "~2.4.0",
"@angular/core": "~2.4.0",
"@angular/forms": "~2.4.0",
"@angular/http": "~2.4.0",
"@angular/platform-browser": "~2.4.0",
"@angular/platform-browser-dynamic": "~2.4.0",
"@angular/router": "~3.4.0",
"@types/file-saver": "0.0.1",
"angular-in-memory-web-api": "~0.2.4",
"angular2-moment": "^1.1.0",
"core-js": "^2.4.1",
"mydatepicker": "^2.0.25",
"ng2-completer": "^1.5.2",
"ng2-file-upload": "^1.2.1",
"ng2-pdf-viewer": "^1.1.0",
"rxjs": "5.0.1",
"systemjs": "0.19.40",
"zone.js": "^0.7.4"
},
"devDependencies": {
"@types/jasmine": "^2.5.36",
"@types/node": "^6.0.46",
"canonical-path": "0.0.2",
"concurrently": "^3.1.0",
"cucumber": "^3.0.0",
"cucumber-tsflow": "^2.2.0",
"http-server": "^0.9.0",
"jasmine-core": "~2.4.1",
"karma": "^1.3.0",
"karma-chrome-launcher": "^2.0.0",
"karma-cli": "^1.0.1",
"karma-jasmine": "^1.0.2",
"karma-jasmine-html-reporter": "^0.2.2",
"lite-server": "^2.2.2",
"lodash": "^4.16.4",
"protractor": "^4.0.14",
"protractor-cucumber-framework": "^3.0.0",
"rimraf": "^2.5.4",
"ts-node": "^3.3.0",
"tslint": "^3.15.1",
"typescript": "~2.3.4",
"webdriver-manager": "^12.0.6"
},
"repository": {}
}
还有我的dragrator.conf.json
var fs = require('fs');
var path = require('canonical-path');
var _ = require('lodash');
exports.config = {
directConnect: true,
// Capabilities to be passed to the webdriver instance.
capabilities: {
'browserName': 'chrome'
},
allScriptsTimeout:90000,
getPageTimeout:400000,
ignoreUncaughtExceptions: true,
framework: 'custom',
frameworkPath: require.resolve('protractor-cucumber-framework'),
// Spec patterns are relative to this config file
specs: ['**/cucumber_test/*.feature' ],
cucumberOpts: {
compiler: "ts:ts-node/register",
require: ['**/*e2e-spec.js'], // require step definition files before executing features
tags: '@TypeScriptScenario,@dev,@AddScenario,@SubtractScenario,@MultiplyScenario,@DivideScenario,@ModulusScenario', // <string[]> (expression) only execute the features or scenarios with tags matching the expression
strict: true, // <boolean> fail if there are any undefined or pending steps
format: ["pretty"], // <string[]> (type[:path]) specify the output format, optionally supply PATH to redirect formatter output (repeatable)
dryRun: false, // <boolean> invoke formatters without executing steps
'fail-fast': true
},
// For angular tests
useAllAngular2AppRoots: true,
// Base URL for application server
baseUrl: 'http://localhost:3000',
// doesn't seem to work.
// resultJsonOutputFile: "foo.json",
onPrepare: function() {
//// SpecReporter
//var SpecReporter = require('jasmine-spec-reporter');
//jasmine.getEnv().addReporter(new SpecReporter({displayStacktrace: 'none'}));
//// jasmine.getEnv().addReporter(new SpecReporter({displayStacktrace: 'all'}));
// debugging
// console.log('browser.params:' + JSON.stringify(browser.params));
/*jasmine.getEnv().addReporter(new Reporter( browser.params )) ;*/
// Allow changing bootstrap mode to NG1 for upgrade tests
global.setProtractorToNg1Mode = function() {
browser.useAllAngular2AppRoots = false;
browser.rootEl = 'body';
};
// browser.manage().window().maximize();
},
/*jasmineNodeOpts: {
// defaultTimeoutInterval: 60000,
defaultTimeoutInterval: 10000,
showTiming: true,
print: function() {}
}*/
}
var fs=require('fs');
var path=require('canonical-path');
var=要求('lodash');
exports.config={
directConnect:没错,
//要传递给webdriver实例的功能。
能力:{
'browserName':'chrome'
},
所有脚本激励:90000,
getPageTimeout:400000,
ignoreUncaughtExceptions:true,
框架:“自定义”,
frameworkPath:require.resolve('dragrator-cumber-framework'),
//规范模式与此配置文件相关
规格:['**/cumber\u test/*.feature'],
黄瓜:{
编译器:“ts:ts节点/寄存器”,
require:['***e2e-spec.js'],//在执行功能之前需要步骤定义文件
标记:'@TypeScriptScenario、@dev、@AddScenario、@SubtractScenario、@multilyscenario、@DivideScenario、@modulescenario'、//(表达式)仅使用与表达式匹配的标记执行功能或场景
strict:true,//如果有任何未定义或挂起的步骤,则失败
格式:[“pretty”],/(键入[:path])指定输出格式,可以选择提供重定向格式化程序输出的路径(可重复)
dryRun:false,//在不执行步骤的情况下调用格式化程序
“快速失败”:正确
},
//用于角度测试
使用Allangular2方法:正确,
//应用程序服务器的基本URL
baseUrl:'http://localhost:3000',
//似乎不起作用。
//resultJsonOutputFile:“foo.json”,
onPrepare:function(){
////SpecReporter
//var SpecReporter=require('jasmine-spec-reporter');
//jasmine.getEnv().addReporter(新的SpecReporter({displayStacktrace:'none'}));
////jasmine.getEnv().addReporter(新的SpecReporter({displayStacktrace:'all'}));
//调试
//log('browser.params:'+JSON.stringify(browser.params));
/*jasmine.getEnv().addReporter(newreporter(browser.params))*/
//允许将引导模式更改为NG1以进行升级测试
global.setGragrantOrtong1Mode=函数(){
browser.useAllAngular2AppRoots=false;
browser.rootEl='body';
};
//browser.manage().window().maximize();
},
/*茉莉花:{
//defaultTimeoutInterval:60000,
defaultTimeoutInterval:10000,
时间安排:没错,
打印:函数(){}
}*/
}
将cucumber版本3降级为2,即可解决此问题