我有一个AngularJS / Flask应用程序(服务器端)如果您尚未使用HTTPS,则会将您重定向到自己的HTTPS版本。我想使用Karma来测试使用HTTPS的应用程序,btu如果没有在我自己的计算机上运行HTTPS服务器就无法在本地进行(这很麻烦),所以我将我的应用程序推送到Heroku网站(比如说mine.herokuapp.com
)拥有SSL。现在,我正在尝试使用类似
var PROXYPATH = 'mine.herokuapp.com';
files = [
...
];
urlRoot = '/_karma_/';
singleRun = true;
browsers = ['Chrome'];
proxies = {
'/': PROXYPATH
};
但是当我尝试运行测试时,导航到应用程序时出现错误Sandbox Error: Application document not accessible
。我很肯定Heroku方面没有任何问题;我可以在那里导航很好。有没有办法在Karma中测试HTTPS,还是我在疯狂追逐?
答案 0 :(得分:2)
我在IIS中运行我的开发站点时遇到此问题,它会将所有HTTP请求重定向到HTTPS
我仍然没有开始工作,但我现在可以将它至少加载到Karma跑步者的iframe中的网站
我必须指定主机名,并且还允许无效的SSL证书 proxyValidateSSL
这是我的配置(GruntJS)格式化。
config.set({
frameworks: [],
files: [
'assets/angular-scenario.js',
'node_modules/karma-ng-scenario/lib/adapter.js',
'tests/e2e/**/*Spec.js'],
urlRoot: '/__e2e/',
hostname: '10.0.0.3',
proxyValidateSSL: false,
proxies: {
'/': 'https://10.0.0.3/'
},
browsers: ['Chrome']
});
我遇到的下一个问题是我使用 X-Frame-Options:拒绝 HTTP标头来阻止外部网站在iframe中的网站中注入mysite
我必须将其更改为 X-Frame-Options:SameOrigin ,然后我的开发站点将加载到Chrome中的Karma runner内。
我的问题
然后我有以下Jasmine规范,navigateTo工作正常,但它挂在expect()行上,永远不会返回。
describe('My App', function () {
beforeEach(function () {
browser().navigateTo('/');
});
it('should redirect to Login', function () {
expect(browser().location().url()).toBe('/Login'); // <- Hangs here
});
});
更新(2013年9月6日)
我做了一些游戏,看看能否让它发挥作用。我的应用程序使用路由,并在删除否则路由配置后,它工作。我仍然需要其他路线,所以我还是不开心。但是我必须要有一些东西阻止它加载
失败
app.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/Foo', {
templateUrl: 'foo.tpl.html',
controller: 'FooCtrl',
controllerAs: 'ctrl'
}).otherwise({
redirectTo: '/Foo'
});
}]);
使用
app.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/Foo', {
templateUrl: 'foo.tpl.html',
controller: 'FooCtrl',
controllerAs: 'ctrl'
});
}]);