我希望能夠定義一個變量,然後在module.run()函數內的respond()方法中使用所述變量。我有這樣的代碼我這()內:在httpBackend模擬函數中使用變量
var testValue=randomValue(); // suffice to say, a random value generator
var httpBackendMock = function() {
angular.module('httpBackendMock', ['ngMockE2E', 'name.of.app'])
.run(function($httpBackend) {
$httpBackend.whenPOST(/.*\/api\/data/).respond(function(method, url, data, headers) {
return [200, '<?xml version="1.0" encoding="UTF-8" standalone="yes"?> \
<data>'+testValue+'</data>', {}];
});
....
但httpBackendMock
對象上面定義的變量testValue
是不可見的run()函數裏面所有,但將「未定義」。
我的理解是,'var'定義的變量在JS中可用於內部作用域代碼,但這不會發生在這裏。有沒有辦法讓變量在裏面工作?
'httpBackendMock'是不是一個對象。這是一個功能。請說明發生了什麼。如果使用'browser.executeScript(httpBackendMock)'執行,這顯然不起作用,因爲外部函數作用域在Node中運行,內部函數作用域在瀏覽器中運行。 – estus
@estus它來自https://docs.angularjs.org/api/ngMockE2E/service/$httpBackend。我用ngmocke2e標記了它,因爲我可能需要熟悉該框架的人。 –
在您發佈的鏈接中沒有提及「httpBackendMock」功能。請說明如何調用這個函數。 – estus