Мокко тестирование, почему я должен использовать «это» для ссылки на функции на той же странице, но не в TS? - PullRequest
0 голосов
/ 10 апреля 2019

Есть ли в Mocha / Sinon обходной путь, чтобы не менять код для написания теста? У нас есть этот код в рабочем файле headers.ts, и у него есть методы, которые ссылаются на другие методы в том же файле. Код работает, но я не могу написать тест без обновления кода.

export function hidePoweredBy(res: Response) {
    res.app.disable('x-powered-by')
    res.removeHeader('Server')
}

export function frameguard(res: Response) {
    res.setHeader('X-Frame-Options', 'SAMEORIGIN')
}
export function securityHeaders(req: Request, res: Response, next: any) {
    frameguard(res)
    nocache(res)
    hidePoweredBy(res)
    next()
}

Файл спецификаций для метода

    describe('securityHeaders', () => {
        it('Should call all methods in securityHeaders', () => {

            const sandbox = sinon.createSandbox()
            sandbox.stub(securityHeaders, 'frameguard')
            sandbox.stub(securityHeaders, 'nocache')
            sandbox.stub(securityHeaders, 'hidePoweredBy')

            const req = mockReq()
            const res = mockRes()
            const spy = sinon.spy()

            securityHeaders.securityHeaders(req, res, spy )

            expect(securityHeaders.frameguard).to.have.been.called
            expect(securityHeaders.nocache).to.have.been.called
            expect(securityHeaders.hidePoweredBy).to.have.been.called


            sandbox.restore()

        })
    })

Чтобы написать работающий тест, мне нужно сослаться на методы, чтобы «this» было областью действия.

export function hidePoweredBy(res: Response) {
    res.app.disable('x-powered-by')
    res.removeHeader('Server')
}

export function frameguard(res: Response) {
    res.setHeader('X-Frame-Options', 'SAMEORIGIN')
}
export function securityHeaders(req: Request, res: Response, next: any) {
    this.frameguard(res)
    this.nocache(res)
    this.hidePoweredBy(res)
    next()
}

Есть ли обходной путь без меня, меняющего код и только тест?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...