1

我正在尝试为 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 应用程序将项目添加到列表中的方式。我怎样才能做到这一点?

4

2 回答 2

1

您可以在表单中添加一个类属性,例如

<form class="myForm">

并将此步骤添加到您的测试文件中

element(':form.myForm').submit();

我认为这可能有效。

于 2013-08-17T11:47:01.170 回答
0

您可以使用一些 jQuery 来触发“回车”键。请记住在您的配置文件中链接一个 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);
    });
});
于 2015-03-02T07:16:34.120 回答