3

如果您尚未使用 HTTPS,我有一个 AngularJS/Flask 应用程序(服务器端)会将您重定向到其自身的 HTTPS 版本。我想使用 Karma 来测试使用 HTTPS 的应用程序,但是如果不在我自己的计算机上运行 HTTPS 服务器(这很麻烦),我无法在本地执行它,所以我将我的应用程序推送到 Heroku 站点(比如在mine.herokuapp.com) 具有 SSL。现在,我正在尝试使用像这样的配置文件对这个外部站点运行我的 Karma 测试

var PROXYPATH = 'mine.herokuapp.com';

files = [
    ...
];

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

proxies = {
    '/': PROXYPATH
};

但是当我尝试运行测试Sandbox Error: Application document not accessible时,导航到应用程序时出现错误。我很肯定 Heroku 方面没有任何问题。我可以在那里导航。有没有办法在 Karma 中测试 HTTPS 或者我是在追逐野鹅?

4

1 回答 1

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:Deny HTTP Header 来阻止外部站点将 mysite 注入到 iframe 内的站点中

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

我的问题

然后我有以下 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'
    });

}]);
于 2013-09-06T01:08:34.813 回答