【发布时间】:2016-08-02 00:29:08
【问题描述】:
我希望能够定义一个变量,然后在 module.run() 函数内的 respond() 方法中使用该变量。我的 it() 中有这段代码:
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() 函数中根本不可见,而是“未定义”。
我的理解是 JS 中的 'var' 定义的变量可用于内部范围的代码,但这里不会发生这种情况。有没有办法让变量在那里工作?
【问题讨论】:
-
httpBackendMock不是一个对象。它是一个函数。请展示它会发生什么。如果用browser.executeScript(httpBackendMock)执行,这显然是行不通的,因为外部函数作用域运行在Node中,而内部函数作用域运行在浏览器中。 -
@estus 来自docs.angularjs.org/api/ngMockE2E/service/$httpBackend。我用 ngmocke2e 标记它,因为我可能需要熟悉该框架的人。
-
您发布的链接中没有提到
httpBackendMock功能。请说明这个函数是如何被调用的。 -
browser.addMockModule('httpBackendMock', httpBackendMock);来自product.moveline.com/…的示例
标签: angularjs mocking protractor ngmocke2e