Ho una certa esperienza con TDD in Java e Kotlin e attualmente provo ad imparare i test con Javascript.
Non sono sicuro che questa sia davvero una domanda sulla tipizzazione debole o strong o sulla progettazione generale.
Ho sempre avuto l'impressione che il codice di derisione / stubing che non possiedi sia una cattiva idea. In Kotlin vorrei creare e interfacciare la libreria e implementare quell'interfaccia con un wrapper.
Quindi iniettare una simulazione della mia interfaccia nei test.
In uno dei libri sto leggendo i suggerimenti per testare i percorsi
di un'app express è di eseguire il stub della classe express.Router()
:
const { expect } = require('chai');
const express = require('express');
const sinon = require('sinon');
describe('user routes', () => {
var sandbox;
var router;
beforeEach(() => {
sandbox = sinon.sandbox.create();
sandbox.stub(express, 'Router').returns({
get: sandbox.spy()
});
router = require('../src/routes/user');
});
afterEach(() => {
sandbox.restore();
});
it('should register GET / route', () => {
expect(router.get.calledWith('/', sandbox.match.any)).to.be.true;
});
});
Il SUT è:
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.send("");
});
module.exports = router;
Va bene, o c'è un modo migliore per farlo?