2
例えばジャスミンとRestangular.extendModelをテストする方法:Restangular extendModelジャスミン
コントローラー:
_this.populateSecurityGroups = function() {
var netid = _this.instance.vm_fields.cloud_network * 1;
CloudNetworksFactory.one(_this.provider, netid).then(
function (net) {
net.security_groups(_this.provider).then(
function (sgs) { _this.security_groups = sgs; },
function (err) {}
);
},
function (err) {}
);
};
工場:
var all = function (provider) {
return provider.getList('cloud_networks');
};
var one = function (provider, id) {
var defered = $q.defer();
this.all(provider).then(
function (nets) {
var res = _.find(nets.data, { id: id });
defered.resolve(res);
},
defered.reject
);
return defered.promise;
};
Restangular.extendModel('cloud_networks', function (model) {
model.security_groups = function (provider) {
var _this = this;
var defered = $q.defer();
provider.security_groups().then(
function (sgs) {
var res = ...
defered.resolve(res);
},
defered.reject
);
return defered.promise;
};
return model;
});
私はこの機能をテストすることはできません、最初のエラーは:
未定義は
未定義のは
これはの始まりです( 'e.security_groups' を評価)対象ではありません( ') "cloud_networks" をr.getListを(' 評価)コンストラクタではありません私のテスト、私はrestangular.extendModelを模擬することはできません。
it('should test populateCloudSubnets properly', function (done) {
ctrl.instance.vm_fields.cloud_network = 1;
ctrl.populateSecurityGroups().then(function(){
....
}, function(err){
expect(err).toBe(null);
done();
});
$httpBackend.flush();
});