我正在尝试做一些后端的e2e测试,所以我需要模拟API调用。下面是我所做的:
angular.module('foo.bar.e2eConf', ['foo.bar', 'ngMockE2E']).
run(function($httpBackend) {
$httpBackend.whenGET('/foo/bar').respond({foo:'bar'});
});然后我像这样配置我的conf/karma.e2e.conf (路径是ok的):
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/bar代理到http://localhost:8000/foo/bar,而不是使用模拟?
有什么想法吗?
问候
泽维尔
发布于 2013-06-07 15:57:13
您需要创建应用程序的一个版本来引导foo.bar.e2eConf模块,而不是引导foo.bar模块。
您必须将javascript文件angular-mocks.js和上面定义的新模块包含在应用程序索引页面中。
你应该能够通过使用这个新的应用程序并看到它从你的mock返回数据来在Karma之外测试这一点。
您可能不需要将这些文件的一半添加到Karma配置中。这只是为了将文件添加到测试场景中。它将在iframe中加载你的应用程序,并且你的应用程序负责加载它自己的javascript。
根据我使用的URL,我使用php为应用程序的两个版本提供服务器:要么是使用api调用的真实版本,要么是使用模拟的e2e版本。
https://stackoverflow.com/questions/16974750
复制相似问题