2016-09-16 6 views
1

Я начинаю добавлять приемочные испытания к моему проекту Ember. Начав с одного, который пытается войти в мое приложение:Тест приемочного приёма не работает с AJAX

import { test } from 'ember-qunit'; 
import moduleForAcceptance from '../helpers/module-for-acceptance'; 

moduleForAcceptance('Acceptance | login'); 

test('logging in', function(assert){ 
    visit('/login'); 

    andThen(function(){ 
    assert.equal(currentURL(), '/login'); 
    }); 

    fillIn('#login input[name=email]', '[email protected]'); 
    fillIn('#login input[name=password]', 'password'); 
    click('#login button[type=submit]'); 

    andThen(function(){ 
    assert.equal(currentURL(), '/dashboard'); 
    }); 
}); 

Но это не удается, потому что вызов AJAX на мой REST API для проверки подлинности не удается. Это отлично работает, когда приложение работает нормально, но не после завершения приемочного теста.

Я проследил его обратно следующее сообщение об ошибке, возвращаемых ember-ajax:

Ember AJAX Request POST https://127.0.0.1:8081/login returned a 0\nPayload (Empty Content-Type)\n"" 

Мой API даже не получает вызов, так что это, кажется, ошибка с отправкой запроса REST. Я проверил hash объект в node_modules/ember-ajax/addon/mixins/ajax-request.js как раз перед его отправкой через методу JQuery AJAX:

{ type: 'POST', 
    data: { email: '[email protected]', password: 'password' }, 
    url: 'https://127.0.0.1:8081/login', 
    dataType: 'json', 
    contentType: 'application/x-www-form-urlencoded; charset=UTF-8', 
    headers: { Authorization: 'Bearer undefined; PublicKey Ab732Jte883Jiubgd84376HhhndikT6' } } 

contentType определяется. Это точно также, как выглядит hash при выполнении одного и того же вызова AJAX с приложением, работающим нормально.

Итак, что же происходит с приемочными испытаниями Ember, которые специально препятствуют работе AJAX? Я подозреваю, что есть свойство config или environment, о котором я не знаю, что мне нужно изменить/настроить, чтобы заставить его работать.

Я бегу:

  • уголек-кли: 2.8.0
  • узел: 4.5.0
  • уголек-Ajax: 2.5.1
  • уголек-кли-QUnit: 3,0 .1
  • phantomjs: 2.1.7

ответ

1

Какой eejit! Мой локальный REST API имеет неверный сертификат SSL. Поэтому мне просто нужно было сообщить PhantomJS игнорировать ошибки SSL в моем testem.js файле:

"phantomjs_args": [ 
    "--ignore-ssl-errors=true" 
],