2017-03-26 24 views
0

私のthenとcatch関数を$ scope.customerinfoからテストしたいと思います。問題は私が正確にどのように知っているのですか?それからテストして、約束の約束をキャッチ

var app = angular.module('shop', ['ngRoute','ngResource']) 
     .factory('Customerservice', function ($resource) { 
      return $resource('http://localhost:8080/Shop/:customer',{customer: "@customer"}); 
    }) 
     .controller('customerController', function ($scope,Customerservice) { 
     $scope.customerinfo = CustomerService.get({customer: "Mark"}); 
     $scope.customerinfo.$promise.then(function(info) { 
      return info; 
     }).catch(function(errorResponse) { 
      throw errorResponse; 
     }); 
}); 

イム

行わまだしかし、これは私のジャスミンのコードではありません
describe('Testing the customerinfo', function() { 
    var $scope; 
    var $q; 
    var deferred; 

    beforeEach(module('shop')); 

    beforeEach(inject(function($controller, _$rootScope_, _$q_) { 
    $q = _$q_; 
    $scope = _$rootScope_.$new(); 
    deferred = _$q_.defer(); 
    $controller('userController', { 
     $scope: $scope 
    }); 
    })); 
    it('should reject promise', function() { 
    // I want to check if the catch option is working 
    }); 
}); 

それでは、どのように正確に私はこれを行うことができ、または私はコードをリファクタリングする必要がありますか?

+0

のために呼び出すことができます行わパラメータを受け取り、私は本当に、コントローラのコードのポイントを理解していない:それは正確に成功した応答をマッピング同じ成功応答を返し、エラー応答をまったく同じエラー応答にマップします。とにかく戻ってきた約束は何もしません。 –

+0

私がこれを行う唯一の理由は、非同期取得リクエストが完了するまで待つ必要があるからです(私は初心者ですが、この方法で動作します)。返された約束はありません。まだプログラミングと。私はちょうどその時をテストし、すぐに機能をキャッチしたい。 – member2

+0

彼らは副作用がなく、戻り値がどこにも格納されていないので、方法はありません。それはちょうど無駄です。 –

答えて

1

ジャスミン「は」メソッドを使用して、非同期のテスト

it('Should reject', function(done) { 
    someAsyncFunction().catch(function(result) { 
    expect(result.status).toBe(401); 
    done(); 
    }); 
});