????????????????????????????????????????????????????????С??????????
?????? Web ????У????????? Restful API ?????????????????
????Restful API ???ò???????????????????
??????????????д????????????????? Node.js ??????????? Restful API ???????
??????????д????
??????????????????????????????????????????????????????д?????????????????????
????· ??д????????????????????????????
????· ??д???????д????????????????????
????· ???????????????????????????????????
????· ????????????????????????
?????????????????????????????????????????????????д????????
???????????????????????????????????????????
???????????????????????????? A λ??????????????? B λ?ó????? Bug??
????????? ?????????????????? ??????????????????????????д???????????????????????????????????????????
??????????????????????????????????????????????????????????????????????
????????????????ù???????????????????????????????????????
??????????? ??? ???????????????????
??????????Щ???д????????????????????????????????п?????
????????????д?????????????????????????????????
????F.I.R.S.T ???
????????????????д??????????????????????? д?? ???????????仰????д????????????????Щ???
?????????????Щ???????????????????
????· Fast : ?????????????
????· Isolated / Independent :
??????????????? 3 A => Arrange(???)?? Act(?ж?)?? Assert(????)
????Arrange: ??????????????????????????????л???????????????????????????е??????
????Act: ????????????????? / API
????Assert: ????????????ж???
?????????????????????л???
???????????????????в???????
????· Repeatable :
??????????????????????е???????? N ?Σ????? N ?????????
?????????????????????????????????????????
????· Self-validating :
????????????????????ж??????ж??????????
????????????????????????ж???
????· Thorough and Timely :
??????t?????????????ó???
??????ó??????????????(TDD)
???????????? F.I.R.S.T ???
????????????????????д?????????????????Щ???
????JavaScript ???????к????????????????д?????????? ava ?? mocha ?? jasmine ?? tap ???
??????Щ??????????? beforeEach ?? afterEach API?????????????????????????????? Isolated / Independent ?? Repeatable ???
??????д???????
?????????????????? Restful API (???? jwt ??????????):
const router = new Router()
// ???? token ?????????????????
router.get('/user'?? jwt?? user.getSelf)
// ???????б????????
router.get('/users'?? user.getList)
// ????????????????????
router.get('/users/:userId'?? user.get)
// ?????????(??????)????????
router.post('/users'?? user.create)
// ??????????????????
router.put('/user'?? jwt?? user.update)
?????????????????????Щ Restful API ??д??????????
???????????????
????· ? app ???? http ??????
????· ????? API ????????
????· ???????????ж???
??????????????????????????????????????????????????????????????? —— supertest ??
???????????????? API???????????????? Restful API ???
?????????÷????£?
????const app = require('../app')
????const request = require('supertest')(app)
????request
????.get('/users')
????.expect(200)
????.end((err?? res) => {
????res.body.should.be.an.Array()
????})
???????
??????????????? TypeError: app.address is not a function ?? ??????????·?????
????const request = require('supertest').agent(app.listen())