2015-09-07 48 views
3

我使用下面的模式上的角網站,量角器嘲諷一些端點:添加多個模擬模塊,「addMockModule」

// mock.js 
// adding the mock module and passing it data 
Mock.prototype.all = { 
    default: function() { 
     browser.addMockModule('httpBackendMock', mockModules.all, { 
     data: data 
     }) 
    } 
} 

// mockmodules.js 
// add dependencies to module and inject it 
exports.all = function() { 

    $httpBackend.whenGET(/user/).respond(function() { 
     return [200, data.mockData.data]; 
    });  

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

    angular.module('httpBackendMock' ['ngMockE2E', 'sportsbook-app']) 
     .value('data', { 
      'mockData': arguments[0], 
      'count': 0 
     }) 
     .run(runBlock); 
     runBlock.$inject = ['$httpBackend', 'data', 'eventDataSourceManager']; 
} 

// test-spec.js 
// call mock from test 
it("Mock", function() { 

    mock.all.default(); 
}); 

現在這工作正常,但我想成爲能夠通過使多個模塊發送不同的數據來添加更多的模塊。例如:

Mock.prototype.all = { 
    default: function() { 
     browser.addMockModule('httpBackendMock', mockModules.allDefault, { 
     data: data 
     }) 
    }, 
    user: function() { 
     browser.addMockModule('user', mockModules.allUser, { 
     userData: userData 
     }) 
    } 
} 

it("Mock", function() { 

    mock.all.default(); 
    mock.all.user(); 
}); 

像這樣,沒有模擬似乎工作。

而且硒服務器中,我可以看到兩個模塊的名字被發現:

Executing: [execute script: angular.resumeBootstrap(arguments[0]);, [[protractorBaseModule_, httpBackendMock, user]]]) 

起初我以爲這個問題是與

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

嘗試添加這一個單獨的模塊並在所有其他模塊被調用後調用它,但仍然無效。有任何想法嗎?

回答

1

這是按預期工作的,因爲您的模擬模塊都使用相同的模塊名稱標識符httpBackendMock。你可以使用一個唯一的名稱,然後最新的模塊不會覆蓋其他的。

+0

我對此感到抱歉。 allDefault和allUser頁面對象具有唯一的模塊名稱標識符,例如:angular.module('allU')和angular.module('allD')。編輯主要問題以反映這一點。仍然無法弄清楚這個問題可能是什麼......我也錯了,只有最後一個模擬工作,實際上他們都不起作用(當我用相同的模塊名測試時,最後一個工作正常) – zalow517