質問

私は私たちのアプリのテストを書いています、そして私はAngularjs-Mocks.jsを含めていますので、それに付属の素敵なDSL関数を使うことができます。

しかし、私は常にフラックス内のクライアントのバックエンドでこのアプリを統合しているので、実際に$ HTTPリクエストを模擬したくない、そして私は実際の回答からテストしたいです。

この状況で実際のHTTPバックエンドを使用する最善の(最も簡単な)方法は何ですか?

編集:

これを使用する潜在的な解決策を見つけました:

$httpBackend.whenPOST(/.*/).passThrough()
.

しかし、私が以下に言及しているように、それは働いていない、壊れている?このエラー:

Error: Unexpected request: POST /some/url/here No more request expected
.

ここで問題を開きました。 https://github.com/angular/angular.js /問題/ 1434

役に立ちましたか?

解決

私は問題に対する迅速で汚れた解決策を考え出した:$ httpbackendが上書きされている行をコメントアウトする(angular-mocks-1.0.2.jsの1365)。

angular.module('ngMock', ['ng']).provider({
  $browser: angular.mock.$BrowserProvider,
  $exceptionHandler: angular.mock.$ExceptionHandlerProvider,
  $log: angular.mock.$LogProvider,
  //$httpBackend: angular.mock.$HttpBackendProvider,
  $rootElement: angular.mock.$RootElementProvider
}).config(function($provide) {
  $provide.decorator('$timeout', function($delegate, $browser) {
    $delegate.flush = function() {
      $browser.defer.flush();
    };
    return $delegate;
  });
});
.

これは他の何かを壊しますが、それは私がテストする必要があるものをテストすることができ、そしてプロダクションアプリに影響を与えないので、私とは大丈夫です。うまくいけば、将来的にこれを行う方法があるでしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top