Ember验收测试不适用于AJAX

时间:2016-09-16 11:18:51

标签: ajax ember.js qunit acceptance-testing

我开始在我的Ember项目中添加验收测试。从尝试登录我的应用程序开始:

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]', 'my@email.com');
  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: 'my@email.com', 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调用的工作?我怀疑有配置或环境属性,我不知道我需要更改/设置才能使其正常工作。

我正在跑步:

  • ember-cli:2.8.0
  • node:4.5.0
  • ember-ajax:2.5.1
  • ember-cli-qunit:3.0.1
  • phantomjs:2.1.7

1 个答案:

答案 0 :(得分:1)

真是太棒了!我的本地REST API具有无效的SSL证书。所以我只需告诉PhantomJS忽略我的testem.js文件中的SSL错误:

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