4

这是我的问题,一步一步来 :)) 我认为这样读起来更好,不像一堵文字墙可怜地试图解释我的特定领域的问题。

1)我们有一个Angular.js带有PHP后端MongoDB存储支持的应用程序。

2)Protractor端到端测试。

3)需要测试改变数据库的页面,即注册场景——我正在测试中完成所有注册步骤,因此数据库获得了新的用户记录。

4)可以预见,测试在运行后会失败,因为数据库有测试用户的记录并且不需要注册 - 用户被重定向到主页。

我正在考虑获得一个mongodbnode.js,并在测试中与数据库交互。
但这似乎并不正确:数据库连接的配置文件php位于后端的文件中,而我正在尝试为我们应用程序的纯前端部分编写测试。

有任何想法吗?

4

2 回答 2

3

有一种简单的方法可以做到这一点。如果您的应用程序中有与后端对话的角度服务,您可以从量角器调用它。

这是一个例子:

https://github.com/andresdominguez/protractor-meetup/blob/master/test/e2e/api-helper.js

function createObject(data) {
  return browser.executeAsyncScript(function(data, callback) {
    var api = angular.injector(['ProtractorMeetupApp']).get('apiService');
    api.member.save(data, function(newItem) {
      callback(newItem._id);
    });
  }, data);
}

此代码将被序列化并在浏览器上执行。我在 ProtractorMeetupApp 模块中有一个名为 apiService 的服务。api服务可以创建、更新等。

您的测试将如下所示:

https://github.com/andresdominguez/protractor-meetup/blob/master/test/e2e/member3-spec.js

it('should call api', function() {
  // Create a new member.
  createObject({name: 'test member'}).then(function(id) {
    console.log(id)
  });
});
于 2013-12-14T04:12:45.147 回答
1

我会模拟与您的 PHP 应用程序的交互。这将允许您将测试隔离到 Angular 代码并更明确地测试数据中的边缘情况(或服务器端的问题)。http://docs.angularjs.org/api/ngMockE2E .$httpBackend

这是另一个可能对您有帮助的答案:mock $httpBackend in angular e2e tests

于 2013-12-11T12:22:52.480 回答