2019-07-02 JS TDD (4)

chaiHttp를 이용한 Restapi테스트

  • User에 대한 api가 restapi형태로 나왔기때문에 chaiHttp를 이용해서 Restapi를 테스트를 했다. 아래의 코드를 이용해서 간단하게 테스트가 통과되었다. 문제는 E2E테스트의 문제였다. ``` const chai = require(‘chai’); const chaiHttp = require(‘chai-http’); const expect = chai.expect;

chai.use(chaiHttp);

const url = ‘http://localhost:3000/users’;

describe(‘Request test’, () => { it(‘request to server’, (done) => { chai.request(url) .get(‘/’) .end((err, res) => { expect(err).to.be.null; expect(res).to.have.status(200); console.log(‘body : ‘, res.body); expect(res.body[0]).to.haveOwnProperty(‘id’).equal(‘jaeyeon93’); done(); }); }); });

```

E2E테스트

PhantomJS나 CasperJS 등을 이용해서 헤드리스 브라우저 테스트를 진행하려고 했었다. 하지만 안됬다. api문서도 잘 동작을 안했고, 나중에 알고보니 구글에서 개발한 Puppeteer라는 라이브러리가 있었기때문이다. 오늘 브라우저 테스트가 안되는것을 해결했으니 내일은 Puppeteer를 이용해서 브라우저 테스트를 돌려봐야겠다.

느낀점

어제는 Nightwatch라는 것을 이용해서 E2E테스트를 했었다. google.com에서는 동작을 하지만 로컬서버에서 제대로 동작을 안했다. restapi test의 경우, Mocha의 Chai-http를 이용해서 테스트를 했지만 E2E테스트의 경우 계속 동작을 안해서 멘붕이 왔었다. 나이트워치로 E2E테스트가 잘안되서 우선 헤드리스 브라우저에서 테스트를 해보려고 PhantomJS, CasperJS를 이용해서 테스트를 하려고 했다. 하지만 이 부분도 안됬다. 알고보니 테스트코드를 실행할때, 서버가 띄어져 있어야됬는데, 서버가 안띄어져서 발생한 문제였다. 내일은 테스트 코드를 실행시킬때 서버와 함께 코드를 실행시키는 스크립트 파일을 작성해서 자동화를 해야겠다.

Written on July 2, 2019