这是我的问题,一步一步地:) :)我认为这样读起来更好,不像文本墙可怜地试图解释我的特定领域的问题。
1)我们有Angular.js
个应用,PHP
后端支持MongoDB
存储空间。
2)Protractor
用于端到端测试。
3)需要测试改变数据库的页面,即注册场景 - 我正在测试中的所有注册步骤,因此db获取新的用户记录。
4)可以预见,测试在运行后会失败,因为db有测试用户的记录而不需要注册 - 用户被重定向到主页。
我正在考虑为mongodb
获取node.js
个包,并在测试中与数据库进行交互。
但它似乎并不正确:数据库连接的配置文件位于后端的php
文件中,而我正在尝试为应用程序的纯前端部分编写测试。
有什么想法吗?
答案 0 :(得分: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)
});
});
答案 1 :(得分:1)
我会模拟与您的PHP应用程序的交互。这将允许您将测试与Angular代码隔离开来,并更明确地测试数据中的边缘情况(或服务器端的问题)。 http://docs.angularjs.org/api/ngMockE2E。$ httpBackend
以下是另一个可能对您有所帮助的答案:mock $httpBackend in angular e2e tests