当前位置: 首页 > 面试题库 >

使用量角器运行测试时调用其他API

邢项禹
2023-03-14
问题内容

我目前已使用量角器进行了一些测试。这些测试正在从WebApi检索数据。但是,我想将WebApi调用指向一个真实但经过模拟的WebApi,该WebApi仅返回要用作测试数据的对象。

例如,当前请求是:

http://localhost/myApp/api/profile/getUser/1

我想操纵此请求,因此测试将使用:

http://localhost/myApp/apiMock/profile/getUser/1

首先,我想编写一个可以更改请求标头的拦截器,但是我不知道如何使它与Protractor一起工作。我不能在量角器测试中直接使用角度,可以吗?如果可以的话,编写拦截器不是问题,我只是不知道如何将其插入量角器进行测试。

我已阅读以下文章:端到端和模拟,但是它不能满足我的需求,因为我不想一遍又一遍地调用同一网址,我想替换动态网址(的一部分)以指向模拟的api服务。

为了使自己更清楚,我不是在客户端上寻找模拟数据。我想保留API调用(我认为这是更多的E2E),但仅指向另一个返回模拟数据的API URL。


问题答案:

这个问题可以通过添加一个来解决 addMockModule

此处有更多详细信息:量角器addMockModule和$httpProvider拦截器

解:

exports.apiMockModule = function () {

  console.log('apiMockModule executing');

  var serviceId = 'mockedApiInterceptor';
  angular.module('apiMockModule', [])
      .config(['$httpProvider', configApiMock])
      .factory(serviceId,
      [mockedApiInterceptor]);

  function mockedApiInterceptor() {
      return {
          request: function (config) {
              console.log('apiMockModule intercepted');
              if ((config.url.indexOf('api')) > -1) {
                config.url = config.url.replace('api/', 'apiMock/');
              }

              return config;
          },
          response: function (response) {
              return response
          }
      };
  }

  function configApiMock($httpProvider) {
      $httpProvider.interceptors.push('mockedApiInterceptor');
  }
};

然后进行加载模块的实际测试。

describe('E2E addMockModule', function() {
    beforeEach(function() {
        var mockModule = require('./mockedRest');
        browser.addMockModule('apiMockModule', mockModule.apiMockModule);
        console.log('apiMockModule loaded');
        browser.get('#page');
    });
    it('tests the new apiMock', function() { 
        // your test that clicks a button that performs a rest api call. 
    });
});

学分到@gontard



 类似资料:
  • 问题内容: 我正在使用量角器在我的应用中进行角度js测试,目前大约有19个测试用例,其中一个失败了 当前,我运行所有测试用例。但是,如何仅运行一个测试用例来调试问题,例如描述为“登录页面应成功登录用户”的问题? 问题答案: Protractor的最新版本(至少)支持通常的Jasmine方法:将函数重命名为,并且仅运行其中的测试。或将函数重命名为,仅此测试将运行。

  • 我正在使用量角器为AngularJS应用程序开发一个自动化测试套件。 在开发测试脚本时,我一直使用,因此在执行脚本时,我必须手动告诉它继续执行测试的每一步。现在我很高兴我的测试能够正确执行,并且希望删除对的调用,这样我就可以让脚本自己运行到完成。 但是,我知道,我不能只删除对的调用,而不添加一些内容,允许测试在执行下一步之前暂停/等待浏览器加载(目前,在运行对的调用后,我告诉脚本继续所用的时间足以

  • 问题内容: 我似乎无法通过测试成功获得PhantomJS。我试图将其集成到我的项目中,但是在此之后失败了,我尝试仅运行基本的Angular Docs示例,但遇到了同样的问题。到目前为止,我的步骤: // … GhostDriver-Main-在端口9515上运行 这是与示例中相同的文件,仅具有browserName,并且seleniumAddress端口已更改: 我收到以下错误消息: 我在gith

  • 问题内容: 我正在开发AngularJS应用,并希望使用Protractor进行端到端2端测试。我想从Browserstack上提供的测试浏览器套件中受益,并在Browserstack Automate而非本地Selenium服务器上运行测试。 如何设置系统以运行这些测试? 问题答案: 从版本3.0.0开始的量角器添加了对BrowserStack的内置支持。 您只需在您的浏览器中添加以下两个参数即

  • 如何设置系统来运行这些测试?

  • 我正在使用Angular 9、Node v14和e2e测试,使用Cucumber、量角器和量角器Cucumber框架。 量角器。conf.js tsconfig。e2e。json 发射json package.json 我可以在VSCode中启动调试器,但问题是每个断点都是未绑定的断点。 我还尝试在tsconfig中添加。e2e。json和我也尝试加入launch。json 问题似乎是ts节点在内