我正在尝试为AngularJS TODO MVC应用程序编写单元测试,而且我对学习e2e测试语法有点困难。
到目前为止,这就是我所拥有的:
describe('todomvc', function () {
beforeEach(function () {
browser().navigateTo('../app/index.html');
});
afterEach(function() {
localStorage.clear();
});
describe('localstorage behavior', function() {
it('should load with zero items in localstorage', function() {
expect(repeater('#todo-list li').count()).toEqual(0);
input('newTodo').enter('Foo Bar');
expect(repeater('#todo-list li').count()).toEqual(1);
});
});
});
我的配置:
basePath = '../';
files = [
ANGULAR_SCENARIO,
ANGULAR_SCENARIO_ADAPTER,
'test/e2e/**/*.js'
];
autoWatch = false;
browsers = ['Chrome'];
//singleRun = true;
proxies = {
'/': 'http://localhost:8000/'
};
junitReporter = {
outputFile: 'test_out/e2e.xml',
suite: 'e2e'
};
简而言之,我需要一种方法来模拟“输入”键,因为这就是这个TODO MVC应用程序如何将项添加到列表中。我怎么能这样做?
答案 0 :(得分:1)
您可以在表单中添加类属性,如
<form class="myForm">
并将此步骤添加到您的测试文件
element(':form.myForm').submit();
我认为这可能有用。
答案 1 :(得分:0)
您可以使用一些jQuery来触发&#34;输入&#34;键。请记住在配置文件中链接一个jQuery库,以便工作。
describe('localstorage behavior', function() {
it('should load with zero items in localstorage', function() {
var e = jQuery.Event("keydown", {
keyCode: 13
});
expect(repeater('#todo-list li').count()).toEqual(0);
input('newTodo').enter('Foo Bar');
element = angular.element('<input name="mytext" type="text" ng-model="mytext">');
element = compile(element)(scope);
element.trigger(e);
scope.$digest();
expect(repeater('#todo-list li').count()).toEqual(1);
});
});