有没有一种简单的方法可以使用 ngMockE2E 将 HTTP 请求列入白名单
Is there an easy way to whitelist HTTP requests with ngMockE2E
由于一些基础设施的变化(即服务器和 VPN),有时我想 运行 我们的应用程序处于 离线 模式。我已经能够使用 ngMockE2E 实现这一点,但它似乎是一种全有或全无的方法,这意味着您必须在应用程序之外明确设置每个 HTTP 请求。
有没有办法让它假设除非您明确设置要处理的 route/url,否则它将自动调用通用 passThrough()
操作?
目前我正在这样做:
noSrvc = $location.search().hasOwnProperty 'nosrvc'
#
# templates
#
$httpBackend.whenGET /(\.htm|\.html)$/
.passThrough();
#
# session
#
rqst = $httpBackend.whenGET /(api\/users\/current)$/
if !noSrvc then rqst.passThrough() else rqst.respond {"user":{
# doing something similar for every single service call in the app... gets tedious after about 3-4
我读过的关于该主题的大部分内容都涉及单元测试,并没有真正解决 隐含直通,除非另有说明。
这就是我用于白名单的方法
app.run(function ($httpBackend) {
// mocked requests, should come first
$httpBackend.when('GET', 'mock').respond(200, {});
// whitelisted real requests, should come last
angular.forEach(['GET', 'DELETE', 'JSONP', 'HEAD', 'PUT', 'POST', 'PATCH'], function (method) {
$httpBackend.when(method).passThrough();
});
});
而且我很确定这里的优先级很重要。
由于一些基础设施的变化(即服务器和 VPN),有时我想 运行 我们的应用程序处于 离线 模式。我已经能够使用 ngMockE2E 实现这一点,但它似乎是一种全有或全无的方法,这意味着您必须在应用程序之外明确设置每个 HTTP 请求。
有没有办法让它假设除非您明确设置要处理的 route/url,否则它将自动调用通用 passThrough()
操作?
目前我正在这样做:
noSrvc = $location.search().hasOwnProperty 'nosrvc'
#
# templates
#
$httpBackend.whenGET /(\.htm|\.html)$/
.passThrough();
#
# session
#
rqst = $httpBackend.whenGET /(api\/users\/current)$/
if !noSrvc then rqst.passThrough() else rqst.respond {"user":{
# doing something similar for every single service call in the app... gets tedious after about 3-4
我读过的关于该主题的大部分内容都涉及单元测试,并没有真正解决 隐含直通,除非另有说明。
这就是我用于白名单的方法
app.run(function ($httpBackend) {
// mocked requests, should come first
$httpBackend.when('GET', 'mock').respond(200, {});
// whitelisted real requests, should come last
angular.forEach(['GET', 'DELETE', 'JSONP', 'HEAD', 'PUT', 'POST', 'PATCH'], function (method) {
$httpBackend.when(method).passThrough();
});
});
而且我很确定这里的优先级很重要。