У меня есть набор тестов, которые все проходят, если они выполняются индивидуально. Однако тесты не пройдены из-за проверки значения файла cookie, если они выполняются параллельно.
Проблема в том, что файлы cookie супертеста не очищаются между каждым тестом.
Есть ли способ очистить куки между каждым тестом, используя супер-тест? Это связано с этой открытой проблемой , которая не предлагает решения.
Я пробовал оба:
afterEach(() => {
request(app)
.set('Cookie', [])
})
и
afterEach(() => {
request(app)
.set('Cookie', '')
})
... безрезультатно.
Вот два теста, которые работают по отдельности, но не работают, если они выполняются параллельно:
test('It should respond 302 to the wrong url', (done) => {
const accessiblePages = {get_member_accessible_pages: []}
nock('http://localhost:8000')
.log(console.log)
.get('/auth/me/')
.reply(200, accessiblePages)
// Must use j: to work with cookie parser
const cookie = 'userInfo=j:' + encodeURIComponent(
JSON.stringify(accessiblePages))
request(app)
.get('/first-url')
.set('Cookie', cookie)
.expect(302)
.expect('Location', '/new-url')
.then((response) => {
expect(response.statusCode).toBe(302)
done()
})
})
и
test('It should set an updated cookie for the logged in user', (done) => {
const accessiblePages = {get_member_accessible_pages: [123, 456]}
nock('http://localhost:8000')
.log(console.log)
.get('/auth/me/')
.reply(200, accessiblePages)
// Must use j: to work with cookie parser
const userInfoCookie = 'userInfo=j:' + encodeURIComponent(
JSON.stringify(accessiblePages))
const accessTokenCookie = 'accessToken=accessToken'
const requestCookie = [userInfoCookie, accessTokenCookie].join(';')
const responseCookieValue = accessiblePages
request(app)
.get('/first-url')
.set('Cookie', requestCookie)
.expect(200)
.then((response) => {
expect(response.statusCode).toBe(200)
const cookies = setCookie.parse(response)
expect(cookieParser.JSONCookie(cookies[0].value))
.toEqual(responseCookieValue) // FAILS HERE - shows accessiblePages variable from the previous test.
done()
})
})