Angularjs 影响数据库的角度e2e测试

Angularjs 影响数据库的角度e2e测试,angularjs,testing,webdriver,protractor,angularjs-e2e,Angularjs,Testing,Webdriver,Protractor,Angularjs E2e,这是我的问题,steb by step:))我认为这样读起来更好,不像一堆可怜的文字试图解释我特定领域的问题 1) 我们有一个Angular.js应用程序,带有PHP后端和MongoDB存储 2) 用于端到端测试的量角器 3) 需要测试改变数据库的页面,即注册场景——我将在测试中完成所有注册步骤,以便db获得新的用户记录 4) 可以预见的是,测试在运行后会失败,因为db有测试用户的记录,不需要注册-用户被重定向到主页 我想为node.js获取一个mongodb包,并在测试中与DB交互。 但它似乎

这是我的问题,steb by step:))我认为这样读起来更好,不像一堆可怜的文字试图解释我特定领域的问题

1) 我们有一个
Angular.js
应用程序,带有
PHP
后端和
MongoDB
存储

2) 用于端到端测试的量角器

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

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

我想为
node.js
获取一个
mongodb
包,并在测试中与DB交互。
但它似乎并不正确:DB连接的配置文件位于后端的
php
文件中,而我正试图为我们的应用程序的纯前端部分编写测试


有什么想法吗?

我会模拟与您的PHP应用程序的交互。这将允许您将测试与角度代码隔离,并更明确地测试数据中的边缘情况(或服务器端的问题)$httpBackend


下面是另一个可能对您有帮助的答案:

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

以下是一个例子:

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

您的测试如下所示:


你想在这里测试什么?隔离测试的目标很重要。如果您的目标是为AngularJS项目进行E2E测试,您将使用模拟HTTP交互。不幸的是,量角器测试中没有可用的
inject
函数,因此您不能像在Karma单元测试中那样插入
$httpBackend
模拟(你显然不理解“端到端”的概念如果你说的是模拟任何东西。这些都是验收测试,应该是最终用户的体验。我不知道我的应用程序的任何最终用户会在我的代码中注入模拟库。嘿,选民,为什么不添加一些你认为问题是什么的评论呢?如果你在模拟东西,那么它就不再是端到端的了测试。这只是集成测试的另一种形式。这不是OP想要的。
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);
}
it('should call api', function() {
  // Create a new member.
  createObject({name: 'test member'}).then(function(id) {
    console.log(id)
  });
});