0

我想使用 Karma 在 Jasmine 中测试一个表单。当我输入错误的凭据并单击按钮时,会出现一条带有相应消息的通知。不幸的是,在 karma 的 iframe 中没有显示这个 div,所以下一个期望失败,因为选择器不匹配任何元素。

it('Testing a form', function () {
     browser().navigateTo('/index.html');
     input('firstName').enter('Wrong');
     input('lastName').enter('Wrong');
     element(':button.btn').click();
     expect(element('.msg h1').text()).toMatch('Wrong Credentials');
}

我得到的错误是

选择器 .msg h1 没有匹配任何元素。

当我在单击事件后使用 sleep(10) 或 pause() 来查看表单时,没有出现消息,这就是选择器不匹配任何元素的原因。请问有什么想法吗?非常感谢!

4

2 回答 2

1

1.您可以使用 $compile 服务在测试脚本中创建相同的表单元素,并通过设置文本框的值来测试它并点击 $('button class').click(); 并设置 spy on 显示错误或成功 msg 的方法。这样您就可以了解是否显示 msg。2.您必须从表单数据中创建 JSON 并对其进行验证或将该表单数据分配给任何 $scope.variable_name。在调用验证函数之前,使用错误的输入显式设置该变量。然后在按钮单击或 $scope.$ 时调用该函数。发射(“点击”);并设置 spy on 用于显示错误消息的方法。

于 2015-04-20T09:13:55.543 回答
0

你可以试试这个;

改变expect(element('.msg h1').text()).toMatch('Wrong Credentials');

expect(element('[ng-view] .msg h1').text()).toMatch('Wrong Credentials');
于 2013-10-28T08:57:07.587 回答