gpt4 book ai didi

angularjs - 使用 'addMockModule' 在一次测试中添加多个模拟模块

转载 作者:行者123 更新时间:2023-12-02 03:22:19 26 4
gpt4 key购买 nike

我正在使用以下模式使用 Protractor 在 Angular 网站上模拟一些端点:

// 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();
});

像这样,所有模拟似乎都不起作用。

同样在 selenium 服务器中,我可以看到找到了两个模块的名称:

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

一开始以为是

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

尝试将它添加到一个单独的模块并在调用所有其他模块后调用它,但仍然没有用。有什么想法吗?

最佳答案

这是按预期工作的,因为您的两个模拟模块都使用相同的模块名称标识符 httpBackendMock。您可以使用唯一的名称,这样最新的模块就不会覆盖其他模块。

关于angularjs - 使用 'addMockModule' 在一次测试中添加多个模拟模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32439856/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com