【发布时间】:2013-04-05 12:02:20
【问题描述】:
我有一个使用 promise 来解析 json 文件的工厂。 它应该只在第一次解析这个文件并在再次调用时返回结果。
这里是工厂
app.factory('getServerConfig', function ($q, $http, serverConfig) {
return function (fileName) {
var deferred = $q.defer();
if (serverConfig.loaded) {
deferred.resolve("alreadyLoaded");
} else {
$http.get(fileName).then(function (result) {
serverConfig.setConfig(result.data);
deferred.resolve("loaded");
}, function (result) {
deferred.reject();
});
}
return deferred.promise;
};
})
以及我如何测试它:
it('should say hallo to the World', inject(function(getServerConfig) {
var promiseResult;
getServerConfig("server-config.json").then(function (result) {
promiseResult = result;
});
rootScope.$apply();
expect(promiseResult).toBe('loaded');
}));
不幸的是,promiseResult 似乎从未设置过。 这是一个代码:http://plnkr.co/edit/uRPCjuUDkqPRAv07G5Nx?p=preview
【问题讨论】:
标签: unit-testing angularjs promise