$资源未在测试中解析

时间:2016-02-16 17:32:25

标签: angularjs karma-jasmine

我正在尝试使用apiSearch.get().then(func(){...})我在测试中使用它,但是当我在控制器中使用相同的方法时,我无法获取数据。是否可以将.then()与返回的资源一起使用?如果没有,我可以使用另一种解决方案替代我的控制器或测试代码吗?

service.js

angular.module('app').factory('apiSearch', ['$resource', '$log',
    function ($resource, $log) {

        return $resource('api/search/:value', {}, {
            get: {
                method: 'GET',
                isArray: false,
                cache: true

            }
        });
    }
])

pageService.js

/*** this works when I test it in the browser but makes my test fail ***/

apiSearch.get({value: 'thisvalue'}, function (res) {
    $state.go('storefront.home');

}, function (err) {
    $state.go('not-found');
})




/*** this works for my test but fails in the browser ***/

apiSearch.get({value: 'thisvalue'}).then(function (res) {
    $state.go('storefront.home');

}, function (err) {
    $state.go('not-found');
})

test.js

it("Should ", function(){

    resolveData = 'itemName'
    deferred.resolve(resolveData);

    spyOn(apiSearch, "get").and.returnValue(deferred.promise)
    $scope.$digest();
    expect($state.current.name).toEqual('storefront.home');

});

0 个答案:

没有答案