1

我正在尝试进行一些后端 e2e 测试,所以我需要模拟 API 调用。这是我所做的:

angular.module('foo.bar.e2eConf', ['foo.bar', 'ngMockE2E']).
  run(function($httpBackend) {
    $httpBackend.whenGET('/foo/bar').respond({foo:'bar'});
  });

然后我conf/karma.e2e.conf像这样配置我的(路径没问题):

var basePath = '../';
var files = [
  ANGULAR_SCENARIO,
  ANGULAR_SCENARIO_ADAPTER,
  // bower libs
  'components/angular/index.js',
  'components/jquery/jquery.js',
  'components/angular-resource/index.js',
  'components/angular-mocks/index.js',
  'components/chai/chai.js',
  'test/chai.conf.js',
  'src/app/**/*.js',
  {pattern:'src/app/**/partials/*.tpl.html', included:false},
  'test/e2e/**/*.js'
];
var singleRun = false;
var browsers = ['Chrome'];
var proxies = {'/': 'http://localhost:8000/'};

我可以运行不涉及 API 调用的测试,但是当我运行涉及它的测试时,我得到了一个不错的结果Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:9876/foo/bar

我想我错误配置了一些东西,但我不知道是什么?

代理和模拟之间是否存在冲突?即代理/foo/barhttp://localhost:8000/foo/bar不是使用模拟?

任何想法?

问候

泽维尔

4

1 回答 1

1

您需要创建一个引导 foo.bar.e2eConf 模块的应用程序版本,而不是引导 foo.bar 模块。

您必须在应用索引页面中包含 javascript 文件 angular-mocks.js 和您在上面定义的新模块。

您应该能够通过使用这个新应用程序并查看它从您的模拟中返回数据来在 Karma 之外进行测试。

您可能不需要将这些文件的一半添加到 Karma 配置中。这只是为了将文件添加到测试场景中。它会将您的应用程序加载到 iframe 中,而您的应用程序负责加载它自己的 javascript。

根据我使用的 URL,我使用 php 为应用程序的任一版本提供服务器:使用 api 调用的真实版本或使用模拟的 e2e 版本。

于 2013-06-07T07:57:13.240 回答