我遇到了一个问题,我有一段时间无法解决这个问题,并且因为我不知道自己做错了什么而感到非常沮丧.:) 任何帮助深表感谢.我也在我的应用程序中使用requirejs.这基本上就是我想要建立的; https://github.com/Cengizism/base
当我尝试开始我的e2e测试时,我在控制台上得到了这个;
INFO [karma]: Karma v0.10.0 server started at http://localhost:8080/_karma_/
INFO [launcher]: Starting browser Chrome
INFO [Chrome 28.0.1500 (Mac OS X 10.8.4)]: Connected on socket id n-0AVRliCogs2nWBfgDz
Chrome 28.0.1500 (Mac OS X 10.8.4): Executed 0 of 0 ERROR (0.208 secs / 0 secs)
Run Code Online (Sandbox Code Playgroud)
我的配置文件如下所示;
module.exports = function(karma) {
'use strict';
karma.set({
frameworks: ['jasmine', 'ng-scenario'],
files: [
'app/vendors/angular-scenario/angular-scenario.js',
'test/e2e/*.js'
],
basePath: '',
exclude: [],
reporters: ['progress'],
port: 8080,
runnerPort: 9100,
colors: true,
logLevel: karma.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
captureTimeout: …Run Code Online (Sandbox Code Playgroud) 我有一个使用Angular UI的select2元素的部分http://angular-ui.github.io/
我遇到的问题是该元素是必需的,虽然我已成功通过以下代码设置字段,但由于外部更改而不确定Angular的模型不能更新,因此不会删除所需的属性,我不知道如何要么提供$ scope.apply(),要么使用Angular的另一个函数来继续测试.
首先允许运行直接jQuery函数:(取自如何从Angular e2e测试范围执行jQuery?)
angular.scenario.dsl('jQueryFunction', function() {
return function(selector, functionName /*, args */) {
var args = Array.prototype.slice.call(arguments, 2);
return this.addFutureAction(functionName, function($window, $document, done) {
var $ = $window.$; // jQuery inside the iframe
var elem = $(selector);
if (!elem.length) {
return done('Selector ' + selector + ' did not match any elements.');
}
done(null, elem[functionName].apply(elem, args));
});
};
});
Run Code Online (Sandbox Code Playgroud)
然后更改字段值:
jQueryFunction('#s2id_autogen1', 'select2', 'open');
jQueryFunction('#s2id_autogen1', 'select2', "val", "US");
jQueryFunction('#s2id_autogen1', 'select2', 'data', {id: "US", text: "United …Run Code Online (Sandbox Code Playgroud) 我对Cucumber和Angular都很新.我有一个rails应用程序,它是一个单页面应用程序.我应该打扰黄瓜,还是应该使用AngularJS的e2e测试?
任何见解,比较和过去的经验表示赞赏!
我正在开发一个系统(使用AngularJS),该系统具有通过双击网页上的某个位置来调用的功能,然后我获得鼠标的坐标并执行我想要的操作.
我正在尝试使用量角器进行e2e测试,但我无法找到有关如何模拟双击并获取位置的任何信息.
有没有人对此有所了解?
谢谢!
尝试项目:https://github.com/yearofmoo/angularjs-seed-repo
环境:
Windows 7 64位
NodeJS v 0.10.24
量角器v 0.16.1
grunt v0.4.2
grunt-cli v0.1.11
笔记:
对于selenium,根据[Julie的帖子] [1],install_selenium_standalone已经在12/2/13左右被webdriver-manager二进制替换.这似乎与这个问题有关.
此外,必须在项目目录中安装git,并且必须在Windows中使用Git Bash运行npm install.
Git Bash出错:
$ grunt test:e2e --debug
运行"connect:testserver"(连接)任务
[D]任务源:c:\nodejs-0.10.24 \node_modules\grunt-contrib-connect\tasks\conn ect.js开始连接web服务器在127.0.0.1:9999.
运行"量角器:singlerun"(量角器)任务
[D]任务来源:c:\nodejs-0.10.24 \node_modules\grunt-protractor-runner\tasks\pr otractor_runner.js启动selenium独立服务器...
events.js:72
throw er; //未处理的'错误'事件
^
错误: 在Process.ChildProcess._handle.onexit(child_process.js:771:34)的
errnoException(child_process.js:980:11)
处生成ENOENT
>致命错误:量角器退出代码:8
在(现已弃用)角度场景测试运行器中,有一个选项可以创建一个runner.html页面,该页面将在iFrame中运行测试,同时在主页面中逐步报告进度.

有没有办法为量角器测试获得类似的逐步日志?它不需要在一个html页面(控制台或日志文件就可以了).
我基于假的后端实现开发角度前端.
这个假存储是使用构建的localStorage,http请求由e2e $httpBackend.所有这一切都很好,直到我试图假冒文件上传服务.
在我的客户端代码中,我有以下服务(基于这篇文章):
angular.module('myApp')
.service('fileUpload', ['$http', function ($http) {
this.uploadFileToUrl = function(file, uploadUrl) {
var fd = new FormData();
fd.append('file', file);
$http.post(uploadUrl, fd, {
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
});
};
}]);
Run Code Online (Sandbox Code Playgroud)
和假上传服务:
angular.module('myApp')
.run(function($httpBackend, $log) {
$httpBackend.whenPOST('api/upload').respond(function(method, url, data) {
// data is a FormData
// TODO
// read the content
// store to local storage
return [200, 'uploaded/path'];
});
});
Run Code Online (Sandbox Code Playgroud)
接收数据是FormData.我读到的FormData只是它是一个只写对象.
如何读取文件内容以将其存储到本地存储中?
我有一个最大长度为 6 的字段,但不知何故,以下输入数据的方式会导致 7 个字符被允许:
<input type="text" name="myName" maxlength="6" ng-model="myModel">
Run Code Online (Sandbox Code Playgroud)
这是测试位:
input('myModel').enter('1111117');
expect(input('myModel').val()).toBe(111111);
Run Code Online (Sandbox Code Playgroud)
这就是结果
expected 111111 but was "1111117"
Run Code Online (Sandbox Code Playgroud)
我想这与正在使用的模型而不是真实领域有关,但是我将如何在 Karma 中测试它?
我为我的JavaScript SPA应用程序制作了一些测试代码.我为整个SPA设置了区域设置,假装在世界各地运行它.
现在,我设置了覆盖Date()类的getTimezoneOffset()函数的语言环境:
Date.prototype.getTimezoneOffset = function () { return 120 };
Run Code Online (Sandbox Code Playgroud)
它工作正常.
但是,在SPA的某些部分我使用的是MomentJS(由于标准DateTime库的某些限制).覆盖是否也会影响MomentJS区域设置?或不?
我想在量角器中上传图像文件。问题是我无法在"input[type = "file"]"不点击上传按钮的情况下获取元素。
当我点击上传按钮时,文件上传对话框弹出。
我试过了
browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); 但它不起作用。
这就是我正在做的:
var image = '../images/image1.png';
var absPathImg = path.resolve(__dirname, image);
element(by.id('uploadImage')).click();
browser.actions().sendKeys(protractor.Key.ESCAPE).perform();
element(by.css('input[type=file]')).sendKeys(absPathImg);
element(by.id('upload')).click();
Run Code Online (Sandbox Code Playgroud)
如何关闭该文件上传对话框以上传图像?
angularjs-e2e ×10
angularjs ×8
protractor ×4
javascript ×2
karma-runner ×2
angular-ui ×1
cucumber ×1
datetime ×1
double-click ×1
e2e-testing ×1
file-upload ×1
gruntjs ×1
momentjs ×1
mouse ×1
selenium ×1
timezone ×1
ui-select2 ×1