2011-10-17 2 views
5

우리는 node.js를 사용하여 GET 및 PUT 요청에 응답하는 RESTful 웹 API를 작성했습니다. Google에서 API 테스트에 어려움을 겪고 있습니다. 첫째, 우리는 Zombie.js을 사용하지만, 잘 그래서 우리가 PUT 요청을 가져올 수 없습니다 문서화 아니에요 : 우리가 restler라는 REST 클라이언트를 사용하여 시도 그 후jasmine과 node.js를 사용하여 웹 API 테스트하기

var zombie = require("zombie"); 

describe("description", function() { 
    it("description", function() { 
    zombie.visit("http://localhost:3000/", function (err, browser, status) { 
     expect(browser.text).toEqual("A") 
    }); 
    }); 
}); 

을하는 OK 것 우리 돈부터 고급 브라우저 시뮬레이션이 필요 없습니다.

var rest = require('restler'); 
describe("description", function() { 
    it("description", function() { 
    rest.get("http://www.google.com").on('complete', function(data, response) { 
     // Should fail 
     expect(data).toMatch(/apa/i); 
    }); 
    }); 
}); 

우리는 다른 테스트 프레임 워크에 대한 어떤 조언에 감사 거라고 : 테스트가 쓸모 즉는 '성공'콜백이 호출되기 전에 완료 이후 - 이는 요청이 비동기 것으로 보인다는 사실에 실패 또는 동기 요청 클라이언트.

+1

RESTful 테스트를 제공하지 않지만 [vows] (http://vowsjs.org/)는 꽤 좋은 node.js 기반 테스트 프레임 워크입니다. – hross

+0

팁을 보내 주셔서 감사합니다. – Jesper

답변

3

저는 이것에 대해 궁금해서 조금 더 연구했습니다. zombie 이외에도 몇 가지 옵션이 있습니다.

http 라이브러리 like this guy과 함께 vows을 사용할 수 있습니다.

그러나 더 나은 접근 방법은 APIeasy를 사용하는 것일 수도 있습니다. 이는 API를 사용하는 것일 수 있습니다. 이는 분명히 vows에 작성되었습니다. awesome article over at nodejitsu that explains how to use it이 있습니다.

또 다른 흥미로운 아이디어는 표현을 사용하는 경우 expresso을 사용하는 것입니다.

4

노드의 경우 Misko Hever의 jasmine-node에는 비동기 지원이 있고 jasmine을 래핑합니다.

https://github.com/mhevery/jasmine-node

당신은 테스트 서명에 '완료'매개 변수를 추가하고, 비동기 호출이 완료 될 때 호출합니다. 타임 아웃을 사용자 정의 할 수도 있습니다 (기본값은 500ms입니다).

Github에서의 README에서

it("should respond with hello world", function(done) { 
    request("http://localhost:3000/hello", function(error, response, body){ 
    done(); 
    }, 250); // timeout after 250 ms 
}); 

자스민 일반도 실행되고 waitsFor 비동기 테스트에 대한 지원을하고, 또는 Jasmine.Async으로 '완료'를 사용할 수 있습니다.