gpt4 book ai didi

angularjs - 影响数据库的 Angular e2e 测试

转载 作者:行者123 更新时间:2023-11-28 19:52:42 24 4
gpt4 key购买 nike

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

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

2) Protractor 用于端到端测试。

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

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

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

有什么想法吗?

最佳答案

有一个简单的方法可以做到这一点。如果您的应用程序中有与后端对话的 angular.service ,您可以从 Protractor 调用它。

这是一个例子:

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)
});
});

关于angularjs - 影响数据库的 Angular e2e 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20518687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com