一个程序PhantomJS如何等待AngularJS$资源解析,然后再尝试测试返回的数据
How does one program PhantomJS to wait for AngularJS $resource to resolve before attempting test on returned data?
我有一个使用PhantomJS的AngularJS控制器测试脚本。该测试旨在查看控制器是否通过使用AngularJS的$resource服务的RESTFul web服务从数据库加载了"用户"数据。问题是测试失败是因为$resource(我相信它返回了一个promise)在测试执行时还没有得到解决。为了通过考试,应对这种延误的正确方法是什么?这是我的代码:
控制器:
.controller('MainCtrl', function ($scope, Users) {
$scope.users = Users.query();
$scope.sortField = 'lastName';
$scope.reverseSort = true;
})
服务:
angular.module('clearsoftDemoApp').factory('Users', function ($resource) {
return $resource('http://localhost:8080/ClearsoftDemoBackend/webresources/clearsoft.demo.users', {}, {
query: {method: 'GET', isArray: true}
});
});
测试:
describe('Controller: MainCtrl', function () {
// load the controller's module
beforeEach(module('clearsoftDemoApp'));
var MainCtrl, scope;
// Initialize the controller and a mock scope
beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
MainCtrl = $controller('MainCtrl', {
$scope: scope
});
}));
it('should retrieve a list of users and assign to scope.users', function () {
expect(scope.users.length).toBeGreaterThan(0);
});
});
您需要模拟工厂调用并将模拟传递给控制器:
beforeEach(inject(function ($controller, $rootScope) {
var users = { query: function() { return [{}]; } };
scope = $rootScope.$new();
MainCtrl = $controller('MainCtrl', {
$scope: scope,
Users: users
});
}))
相关文章:
- AngularJS加载JSON数据,然后从中解析/加载HTML
- 构建空图表,然后设置它's数据
- 如何使用javascript验证表单中的数据,然后调用php页面
- 使用JavaScript或AJAX从HTML表单中提取数据,然后将其传递给PHP
- 如何在状态输入ui路由器时立即显示模板,然后当承诺被解决时显示数据
- 在输入字段中选择一个值,然后用相应的数据填充另一个字段
- 如何将 Oracle 数据转换为 JSON,然后在 JavaScript 中使用
- Angular js,在选择元素上,我想 POST 数据以将其保存在数据库中,然后我想使用 PUT 更新它而无需重新加载
- 将普通的 PNG 图像转换为 JSON 数据,然后存储到对象
- 从select中选择一个选项,然后使用Codeigniter在另一个选择框上显示数据
- jquery替换DIV数据,然后跟踪对它的点击
- 如何从网站获取数据,然后显示在英特尔 XDK 页面中
- 从页面上点击的链接中删除数据,然后移动到下一页&在CasperJS中重复
- 使用AJAX获取JSON数据,然后通过HTML上的ElementID输出数据
- 使用 jquery 从 php 获取数据,然后再次传递给 php
- 如何将数据保存在一个 HTML 页面中,然后在 Phonegap 中的另一个 HTML 页面上显示
- JQuery 暂停表单提交,添加帖子数据,然后提交
- PHP Yii-单击列表然后显示模式中单击的列表的完整数据
- 等待加载的数据,然后在 AngularFire 0.9.0 中返回
- 如何用数据预加载表单(新操作),然后在Ruby on Rails中提交