Ember 验收测试不适用于 AJAX
Ember acceptance test not working with AJAX
我开始向我的 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 请求的错误。我已经检查了 node_modules/ember-ajax/addon/mixins/ajax-request.js
中的 hash
对象,就在它被发送到 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 调用工作的呢?我怀疑有一个配置或环境 属性 我不知道我需要 change/set 才能让它工作。
我是 运行:
- ember-cli: 2.8.0
- 节点:4.5.0
- ember-ajax: 2.5.1
- ember-cli-qunit: 3.0.1
- phantomjs: 2.1.7
多棒的 eejit!我的本地 REST API 有一个无效的 SSL 证书。所以我只需要告诉 PhantomJS 忽略我的 testem.js
文件中的 SSL 错误:
"phantomjs_args": [
"--ignore-ssl-errors=true"
],
我开始向我的 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 请求的错误。我已经检查了 node_modules/ember-ajax/addon/mixins/ajax-request.js
中的 hash
对象,就在它被发送到 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 调用工作的呢?我怀疑有一个配置或环境 属性 我不知道我需要 change/set 才能让它工作。
我是 运行:
- ember-cli: 2.8.0
- 节点:4.5.0
- ember-ajax: 2.5.1
- ember-cli-qunit: 3.0.1
- phantomjs: 2.1.7
多棒的 eejit!我的本地 REST API 有一个无效的 SSL 证书。所以我只需要告诉 PhantomJS 忽略我的 testem.js
文件中的 SSL 错误:
"phantomjs_args": [
"--ignore-ssl-errors=true"
],