2

分度器テストでngMock httpBackendを構築しています。

var mockJson = require(projectRoot + 'mock/load.json');

var mockResource = function() {
    angular.module('aMockObject', ['myApp', 'ngMockE2E'])
    .run(function($httpBackend) {
        $httpBackend.whenGET('a/path').respond(mockJson);
    });
};

モック応答のデフォルトの JSON オブジェクトは、ファイルからロードする必要があります。

ただし、$httpBackend コードは実際には Protractor スクリプト コンテキストではなくブラウザ コンテキストで実行されるため、mockJson変数は未定義です。

これを機能させる他の方法はありますか?私が考えることができるのは、ブラウザのコンテキストでjsonファイルをロードするためのある種の挿入されたスクリプトタグだけです。

4

2 に答える 2

2

addMockModuleを使用して、分度器とアプリケーションの間でデータを渡すことができます。

ファイル.json

{
    some_property: 'value'
}

aMockObject.js:

exports.module = function (data) {
    angular.module('aMockObject', ['myApp', 'ngMockE2E'])
    .run(function($httpBackend) {
        $httpBackend.whenGET('a/path').respond(data);
    });
};

初期化関数:

var aMockObject = require('aMockObject');    
var file = require('file.json');    
browser.addMockModule('aMockObject', aMockObject.module, file);
于 2015-05-27T05:28:53.213 に答える
1

まあ、jsonを直接ロードするとうまくいきます。

// Allow JSON
$httpBackend.whenGET(/.*\.json$/).passThrough();

$http.get('/path/to/file.json').success(function(json) {
  // other httpBackend code here
});
于 2015-05-23T00:05:12.273 に答える