使用ENTER键进行AngularJS e2e测试

时间:2013-04-11 18:15:14

标签: unit-testing angularjs angularjs-e2e

我正在尝试为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应用程序如何将项添加到列表中。我怎么能这样做?

2 个答案:

答案 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);
    });
});