実サーバーを利用した、AngularJS
のPOST
のテストを行っていますが、
サーバー側でPOST
の値がとれません。
(問題なく動いているAPIでテストしています。)
ソースコードは以下の通りです。どなたか解決方法もしくはヒントを
頂けませんでしょうか?よろしくお願い致します。
参考サイト
ngMockE2E $httpBackend "passThrough()" doesn't work #1434
AngularJS
Javascript
1angular.module('app.service', ['ngResource']) 2 .config(['$logProvider', '$httpProvider', '$locationProvider', function($logProvider, $httpProvider, $locationProvider) { 3 $logProvider.debugEnabled(true); 4 $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;application/json;charset=utf-8'; 5 $locationProvider.html5Mode(true); 6 }]);
Javascript
1angular.module('app.service') 2.factory('Login', ['$resource', function($resource) { 3 "use strict"; 4 return $resource( 5 '', 6 {}, 7 { 8 login: { method: 'POST', url: 'http://hogehoge/login/' } 9 } 10 ); 11}]);
Javascript
1angular.module('appDev', ['app.service', 'ngMockE2E']); 2describe('POSTのテスト', function() { 3 4 var user = { id: 'xxx@yahoo.co.jp', pass:'yyyyyyyy' }; 5 6 beforeEach(function() { 7 angular.module('appDev') 8 .run(function($httpBackend) { 9 $httpBackend.whenPOST(/.*/).passThrough(); 10 }); 11 }); 12 13 it('POSTのテスト', function(done) { 14 $injector = angular.injector(['appDev']); 15 $injector.invoke(function(Login, $rootScope) { 16 var login = new Login(user); 17 login.$login().then(function(value) { 18 expect(value.status).toEqualTo('XXX'); 19 expect(value.message).toEqualTo('XXX'); 20 }).catch(function(data, status) { 21 console.log('status:', status); 22 done.fail(JSON.stringify(data)); 23 }); 24 $rootScope.$digest(); 25 }); 26 }); 27});
FuelPHP
PHP
1class Controller_Api_Login extends Fuel\Core\Controller_Rest { 2 3 protected $format = 'json'; 4 5 public function action_index() { 6 7 $post = Input::json(); 8 Log::debug(print_r($post, true)); -> 空の配列 9 Log::debug('pass:' . $post['pass']); -> 値は取れない。yyyyyyyyが期待されている。 10 Log::debug('id:' . $post['id']); -> 値は取れない。xxx@yahoo.co.jpが期待されている。 11 以下略 12}
エラーログ
LOG: 'status:', undefined Firefox 51.0.0 (Mac OS X 10.10.0) Loginサービスのテスト ログイン成功時のテスト FAILED Failed: {} @js/services/login.service_spec.js:42:9 h/<@https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js:133:460 Hf/this.$get</m.prototype.$eval@https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js:147:309 Hf/this.$get</m.prototype.$digest@https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js:144:412 Hf/this.$get</m.prototype.$apply@https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js:148:76 l@https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js:101:87 rg/</t.onload@https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js:106:489 Firefox 51.0.0 (Mac OS X 10.10.0): Executed 7 of 7 (1 FAILED) (1.438 secs / 1.408 secs)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。