Jasmine 및 RequireJS를 사용하여 테스트를 수행하려고합니다. 제가 설명했던 기능의 맥락에 문제가 있다는 것을 알기 전까지는 모든 것이 잘 진행되고있었습니다.Jasmine 비동기 테스트
저는 Ajax 테스트를하고 있습니다. 우선 내가하는 일은 성공을위한 리스너를 설정 한 다음 그 서비스를 요청하는 것입니다. 그런 다음 내 it()
선언 내에서 서비스 응답을 기반으로 테스트를 수행합니다. 여기
// auth.js
define(['service/auth'], function(auth) {
describe('Tests "auth" service', function() {
var data;
var OPTIONS = {
CN: '147144147',
GV: '147153162'
};
auth.on.success.addOnce(function(response) {
data = response;
});
auth.request(OPTIONS);
it('"status" should exist and be "true"', function() {
waitsFor(function() {
return data !== undefined;
});
runs(function() {
expect(data['status']).toBeDefined();
expect(data['status']).toBeTruthy();
});
});
});
});
// login.js
define(['service/login'], function(login) {
describe('Tests "login" service', function() {
var data;
var OPTIONS = {
oper: 1,
codigoouemail: '101',
senha: '10151015'
};
login.on.success.addOnce(function(response) {
data = response;
});
login.request(OPTIONS);
it('Should get the service response for user "' + OPTIONS.codigoouemail + '"', function() {
waitsFor(function() {
return data !== undefined;
});
runs(function() {
expect(data).toBeDefined();
});
});
});
});
개별적으로 테스트하지만 내가 주목하는 것은 그들이 data
에 대해 같은 값을 공유하는 때 그들은 모두 잘 작동합니다. 실행될 첫 번째 모듈은 값을 설정하고 다른 스펙은 동일한 값을 갖습니다. 각 서비스 응답을 제대로 테스트 할 수 있도록 모듈 당 하나의 값을 가져야합니다. 이론적으로 모든 모듈은 자체 범위를 가져야하지만 이런 일이 발생하지는 않습니다.
누군가이 문제를 해결하는 방법에 대한 아이디어가 있습니까?
[Jasmine 2.0.0] (http://jasmine.github.io/2.0/introduction.html)에는 이제'done' 매개 변수가 있습니다.()'메소드를 사용하면 코드를 조금 줄여서 비동기 테스트를 작성할 수 있습니다. 또한 [Karma test runner] (http://karma-runner.github.io/0.10/index.html)를 사용하는 경우 [Karma는 현재 Jasmine 1.3.1 번들과 함께 제공됩니다.] (http : //stackoverflow.com/a/21117832/456814), 그런 경우에는 새로운 "done"매개 변수를 사용할 수 없습니다 (적어도 Karma가 Jasmine 버전을 업데이트 할 때까지). –
[Jasmine 2.0.0 비동기 Javascript 테스트] (http://blogs.lessthandot.com/index.php/webdev/uidevelopment/javascript/testing-asynchronous-javascript-w-jasmine/)는 좋은 블로그 게시물입니다. 사용 가능한 Jasmine 버전이 있다면 새로운 Jasmine 2.0.0'done' 매개 변수를 사용하는 방법. –
@Cupcake 오, 마침내! 좋은 물건. 저는 현재 Konacha plus Sinon과 Chai로 테스트를 진행하고 있습니다. 나는 재스민에게 또 다른 기회를 주어야한다. –