jsdc 2015 - tdd 的開發哲學,以 node.js 為例
TRANSCRIPT
SPOOKY
ProgrammerDevOps
Team Leader
Java 6 yearsJavascript 1.5 years
smlsun@facebook
trunk-studio.comblog.trunk-studio.com
var liftApp = async () => { await models.sequelize.sync({ force: config.connection.force }); await bootstrap(); app.listen(config.port); return app;}if (env !== 'test') liftApp();module.exports = liftApp
import chai from 'chai';import request from 'supertest';import sinon from 'sinon';import liftApp from '../../server';chai.should();global.sinon = sinon;before(async (done) => { let app = await liftApp(); global.app = app; global.request = request.agent(app.listen()); done();});
APstart
test frameworkstart
SPECdescribe('auth login spec', () => { before(async (done) => { let testUser = {'username': 'test', 'password': 'test'} await models.User.create(testUser); done(); });
it('login should be success.', async (done) => {
let loginUserFormData = { 'username': ‘test', 'password': ‘test' }; request.post(‘/auth/login') .send(loginUserFormData).expect(200) .end((error, res) => { if (error) done(error); let loginResult = res.body; loginResult.success.should.be.true; done(); }) }});
• http://qualitycoding.org/tdd-testimonial/
• http://gamesfromwithin.com/backwards-is-forward-making-better-games-with-test-driven-development
• http://punnode.com/archives/18016
• http://teddy-chen-tw.blogspot.tw/2014/09/blog-post_22.html