Testing 使用Karma在HTTPS上测试外部托管的应用程序

Testing 使用Karma在HTTPS上测试外部托管的应用程序,testing,https,karma-runner,Testing,Https,Karma Runner,我有一个AngularJS/Flask应用程序,如果你还没有使用HTTPS,它(服务器端)会将你重定向到HTTPS版本。我想使用Karma测试使用HTTPS的应用程序,顺便说一句,如果不在我自己的计算机上运行HTTPS服务器,我无法在本地进行测试(这很麻烦),所以我将我的应用程序推到了一个Heroku站点(比如在mine.herokuapp.com)上,该站点具有SSL。现在,我正试图用一个配置文件对这个外部站点运行Karma测试,如 var PROXYPATH = 'mine.herokuap

我有一个AngularJS/Flask应用程序,如果你还没有使用HTTPS,它(服务器端)会将你重定向到HTTPS版本。我想使用Karma测试使用HTTPS的应用程序,顺便说一句,如果不在我自己的计算机上运行HTTPS服务器,我无法在本地进行测试(这很麻烦),所以我将我的应用程序推到了一个Heroku站点(比如在
mine.herokuapp.com
)上,该站点具有SSL。现在,我正试图用一个配置文件对这个外部站点运行Karma测试,如

var PROXYPATH = 'mine.herokuapp.com';

files = [
    ...
];

urlRoot = '/_karma_/';
singleRun = true;
browsers = ['Chrome'];

proxies = {
    '/': PROXYPATH
};

但是,当我尝试运行测试时,在导航到应用程序时会出现错误
sandboxerror:Application document not accessible
。我肯定Heroku那边没有什么问题;我可以很好地导航到那里。有没有办法在Karma中测试HTTPS,还是我在白费力气?

我在IIS中运行我的开发站点时遇到了这个问题,它会将所有HTTP请求重定向到HTTPS

我还没有开始工作,但我现在可以让它至少在Karma runner的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:DenyHTTP头阻止外部站点将mysite注入iFrame内部的站点

我必须将其更改为X-Frame-Options:SameOrigin,然后我的开发站点将加载到Chrome中的Karma runner中

我的问题

app.config(['$routeProvider', function ($routeProvider) {

    $routeProvider
    .when('/Foo', {
        templateUrl: 'foo.tpl.html',
        controller: 'FooCtrl',
        controllerAs: 'ctrl'
    });

}]);
然后我有了下面的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
    });
});

app.config(['$routeProvider', function ($routeProvider) {

    $routeProvider
    .when('/Foo', {
        templateUrl: 'foo.tpl.html',
        controller: 'FooCtrl',
        controllerAs: 'ctrl'
    });

}]);