로그인 및 체크 아웃 작업과 함께 수행되는 모든 작업을 포함하여 테스트를 작성하려고합니다. 여기에 지금까지하고 있어요 무엇 :Ember CLI를 사용한 통합 테스팅 세션
테스트/통합/세션-test.js
import Ember from "ember";
import { test } from 'ember-qunit';
import startApp from '../helpers/start-app';
var App;
module('Integrations: Sessions', {
setup: function() {
App = startApp();
},
teardown: function() {
Ember.run(App, App.destroy);
}
});
test('Unsuccessful Sign In', function() {
expect(3);
visit('/sign-in');
andThen(function() {
fillIn('input#email', '[email protected]');
fillIn('input#password', 'bad_password');
click('input#submit');
andThen(function() {
equal(currentRouteName(), 'sign-in', 'Unsuccessfull sign in stays on the sign in page.');
ok($('input#email, input#password').hasClass('error'), 'Inputs have a class of "error."');
equal($('input#submit').prop('disabled'), false, 'Submit button is not disabled.');
});
});
});
test('Successful Sign In', function() {
expect(2);
visit('/sign-in');
andThen(function() {
fillIn('input#email', '[email protected]');
fillIn('input#password', 'password');
click('input#submit');
andThen(function() {
equal(currentRouteName(), 'welcome', 'Successfull sign in redirects to welcome route.');
ok(find('.message').length, "Page contains a list of messages.");
});
});
});
그리고, 여기에 배후 논리에서 기호의 아래 손질 버전입니다 :
은응용 프로그램/컨트롤러/로그인 in.js
import Ember from 'ember';
export default Ember.Controller.extend({
needs: ['application'],
actions: {
signIn: function() {
var self = this;
var data = this.getProperties('email', 'password');
// Attempt to sign in and handle the response.
var promise = Ember.$.post('/v3/sessions', data);
promise.done(function(response) {
Ember.run(function() {
self.get('controllers.application').set('token', response.access_token);
self.transitionToRoute('welcome');
});
});
...
}
}
});
이 테스트 "에 실패 로그인은"광주를 작동 아주 좋아. "성공적인 로그인"이 작동하기 시작한 다음 중간에 종료됩니다. 로그인 후 올바르게 리디렉션됩니다. 시작 페이지에서 메시지를 가져 오기 위해 전화를 걸면 노드 서버는 Error: Not enough or too many segments
및 500 상태로 응답합니다. 전 세계에서 API를 제어 할 수 없다고 가정 할 때 그 의미는 무엇이며 어떻게 수정할 수 있습니까?
또한 API는 주로 Koa와 Passport를 사용하여 작성되었습니다.