Я написал простой JSON api с выражением, и я пытаюсь использовать мокко, чтобы выполнить некоторые тесты черного ящика. В ходе тестирования API требует аутентификации в качестве разных пользователей, поэтому каждый тест для определенной функции выполняется по меньшей мере из двух запросов: операция входа и один или несколько аутентифицированных запросов, которые проверяют фактическую функцию.Взаимодействующее взаимодействие для тестирования Экспресс-приложений
Я не нашёл ни одной библиотеки, которая похожа на django.test.client
, чтобы имитировать взаимодействие между HTTP клиентом и сервером. Supertest кажется популярным, но он очень низкоуровневый по сравнению с клиентом тестирования django. Это, как я хотел бы написать простой тест с проверкой подлинности с ним (простите мой CoffeeScript):
it 'should return a 200 OK', (done) ->
supertest(server.app)
.post('/login')
.send("username=xxx&password=pass")
.end (err, res) ->
res.should.have.status(200)
supertest(server.app)
.get('/api/users')
.set('cookie', res.headers['set-cookie'][0])
.expect(200, done)
Является ли это действительно чистый способ выполнить взаимодействие? Есть ли какая-нибудь библиотека, которая помогла бы мне с асинхронностью (не похоже, что мне понадобится что-то, кроме простой сериализации тестов в 99% случаев, обратные вызовы просто запутываются) и состояние? Что-то, что бы так:
it 'should rock', (done) -> myCoolLibrary [
->
@post '/login', {username: "xxx", password: "pass"}, (err, res) =>
res.should.have.status 200
@done()
,
->
@get '/api/users', (err, res) =>
res.should.have.status 200
@done()
]
Если ничего подобного не существует, то, что я должен написать это сам :-) зависимостью от контекста, потому что я использую слишком много ZappaJS в эти дни, и благодаря жиру стрелке CoffeeScript в , это совсем не плохая идиома.
Более ранняя версия пост имел что-то вроде строк «Это очень похоже на async.series, и это не совпадение». Я должен был оставить его там :-) Очевидно, что node.js не пропускает каких-либо строительных блоков, но, исходя из более монолитной структуры, мне очень сложно обнаружить и изучить 10 модулей, чтобы сделать что-то настолько простое. В конце концов я написал очень специфическую реализацию в Zappa, я отправлю ее здесь в какой-то момент. – BruceBerry
Узел экосистемы вроде Perl: есть более чем один способ сделать это. Вы проводите много времени, оценивая возможные варианты модулей. – dankohn