0
私はジャスミンの初心者です!ジャスミンでの処理に失敗しました
次のように私は次のコード
function getSomeData() {
return $http(
{
method: 'GET',
url: $localStorage.serverName + 'w_service_json.get_wf_proc?pn_login_id=' + sessionService.getUserId()
}).then(function (response) {
var lv_json = JSON.stringify(response.data);
var myArr = JSON.parse(lv_json);
return myArr;
}).catch(function (err) {//console.log(err);
var val = err.message || (err.status==-1?'server error':'error');
errService.add(val);
return err;
});
}
とエラー処理サービス(errService)でサービスを持っている:
angular
.module('err')
.service('errService', errService);
errService.$inject = ['$mdDialog'];
function errService($mdDialog) {
var self = this;
var erros=[];
self.add = add;
self.show = show;
return self;
function add(err)
{
erros.push(err);
throw err;
}
私は私ので、サービスがエラーを処理していることを確認する必要がありますジャスミンでテストしました:
beforeEach(inject(function (_errService_,_$rootScope_,_sessionService_,_wfActivitiesRemoteService_,_$localStorage_,_$state_, $httpBackend) {
$scope=_$rootScope_;
errService=_errService_;
wfActivitiesRemoteService = _wfActivitiesRemoteService_;
state=_$state_;
$localStorage=_$localStorage_;
$localStorage.serverName="http://someserverip/";
sessionService=_sessionService_;
httpBackend = $httpBackend;
httpBackend.whenGET(/\.html$/).passThrough();
}));
it("sem sessao", function() {
spyOn(sessionService, "getUserId").and.returnValue("");
httpBackend.expectGET('http://someserverip/w_service_json.get_wf_proc?pn_login_id=').respond(-1,errServer);
var test=function(data)
{
expect(data).toEqual('');
console.log("test");
};
var fail=function(err)
{
expect(err).not.toBeUndefined();
console.log("fail");
};
var run=function()
{
wfActivitiesRemoteService.getSomeData().then(test).catch(fail);
};
expect(function() {wfActivitiesRemoteService.getSomeData}).toThrow('server error');
run();
httpBackend.flush();
});
私は関数内で入力することはできません!サービスの約束は失敗し、テストは自動的にテストの中のキャッチに入ることなく失敗します!
どうすればこの問題を解決できますか? これを解決する正しい方法は何ですか?
これを行う正しい方法は '$ httpBackend.whenGET()'を使って、あなたのキャッチにヒットするように応答する方法を伝えることです。 https://docs.angularjs.org/api/ngMock/service/$httpBackend#whenGET – tehbeardedone
「toThrow」アサーションの使用は正しくありません(getSomeDataがそこで呼び出されないという事実の他に)。拒否された約束は投げない。 – estus
getSomeDataはtypoのbeacauseと呼ばれていませんでした。ごめんなさい! – davidmr