【问题标题】:angular $httpBackend.when mocks - delay response NOT globally角度 $httpBackend.when 模拟 - 延迟响应不是全局的
【发布时间】:2026-01-06 07:55:01
【问题描述】:

我发现this article 在使用 $httpBackend 模拟数据时如何创建人工服务器延迟。

有没有办法在每个模拟的基础上拥有这个?也许是这样的:

    $httpBackend
        .whenGET(/\/my\/endpoint$/)
        .respond(data, 2000);

   $httpBackend
        .whenGET(/\/my\/endpoint$/)
        .withDelay(2000)
        .respond(data);

【问题讨论】:

    标签: angularjs httpbackend angularjs-ngmock ngmocke2e


    【解决方案1】:

    您可以使用angular-mocke2e-maydelay

    如果你使用bower

    bower install angular-mocke2e-maydelay
    

    index.html

    <script src="/bower_components/angular-mocks/angular-mocks.js">    </script>
    <script src="/bower_components/angular-mocke2e-maydelay/angular-mocke2e-maydelay.js"></script>
    

    将此添加到您的应用中

    angular.module('app', ['ngMockE2E', 'mayDelay'])
    

    在测试中,可以使用未模拟的$httpBackend 来延迟响应。

    $httpBackend.whenGET('/foo.json').respond({foo:"bar"}, 3000); //delay 3s
    $httpBackend.whenPOST('/bar',{foo:"bar"}).respond(200, "succeed", 5000); //delay 5s
    

    此功能请求已发布在 angularjs repo

    【讨论】: