0
カルマユニットテストからファクトリメソッドを呼び出そうとしています。angularjs - ユニットテスト、ファクトリメソッドを呼び出すことができません
私が電話しようとしている方法(load()
)は存在しません。ここで
コードです:ここ
unitTest.js
describe('Data Factory', function() {
var DataFactory, scope, spy;
beforeEach(module('App'));
beforeEach(inject(function($injector, $rootScope, _ZoneData_) {
var DataFromjson;
scope = $rootScope.$new();
DataFromjson = _ZoneData_;
return spy = spyOn(DataFromjson, 'load');
}));
return it('Should Load the right data from the json file', function() {
var test;
test = DataFactory;
console.log(test);
return expect(DataFactory).toBeDefined();
});
});
とは、工場出荷時のコードです:
angular.module('services', ['ngResource']).factory('ZoneData', [
'$http', '$stateParams', function($http, $stateParams) {
var ZoneData;
ZoneData = function(Data) {
if (Data) {
return this.setData(Data);
}
};
ZoneData.prototype = {
setData: function(Data) {
return angular.extend(this, Data);
},
load: function(id) {
var scope;
scope = this;
return $http.get('default-system.json').success(function(Data) {
return scope.setData(Data.data);
}).error(function(err) {
return console.error(err);
});
},
filtered: function() {
var scope;
scope = this;
return $http.get('default-system.json').success(function(Data) {
return angular.forEach(Data.data, function(item) {
var urlZoneId;
urlZoneId = parseInt($stateParams.zoneID);
if (item.iID === urlZoneId) {
return scope.setData(item);
}
});
});
}
};
return ZoneData;
}
])
説明のビットを持つ任意のヘルプは本当に理解されるであろう。ありがとう
実際にZoneData.prototype.load()ではなく、ZoneData.load()だけでなくload()ですか? – Jagrut
ご覧のとおり、私のテストではconsole.logがあり、これが結果です:function(Data){ if(Data){ return this.setData(Data); }どんな方法であれ助けてくれたら } – Nick
私はZonedata.prototype.load()を呼びたいと思うが、私のコントローラでは、このメソッドを以下のように呼んでいる。 $ scope.zones = new ZoneData(); $ scope.zones.load(); – Nick