Храните данные в переменной для использования в REST API-маршрутах в качестве параметров перед запуском тестов frisby.
У меня есть маршруты, которые используют параметры (электронная почта и токен), и я хочу передать их в тестах frisby, но перед запуском тестов я должен получить эти данные в моей БД (Монго).
Проблема в том, что мои тесты запускаются (или нет), прежде чем я получу данные.
Вот код:
/* global require */
"use strict";
var frisby = require('frisby');
var emailUser;
var tokenUser;
var getDataUser = function(e) {
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost/virtusBack-end', function(err, db) {
if (err) throw err;
console.log("Connected to Database");
var user = db.collection('users').findOne({
name: "virtus-app"
});
user.then(function(result) {
emailUser = result.email;
tokenUser = result.token1 + result.token2;
db.close(test(emailUser, tokenUser));
});
});
}
function test(email, token){
console.log(email);
//http://localhost:8080/rooms?email=""?token="" (IT HAS 2 PARAMS, EMAIL ADN USER TOKEN)
frisby.create('Test DB').get('http://localhost:8080/rooms')
.expectStatus(200)
.toss();
frisby.create('Test DB 2').get('http://localhost:8080/rooms')
.expectStatus(200)
.expectHeaderContains('content-type', 'application/json')
.toss();
frisby.create('Creating Room: 09')
.post('http://localhost:8080/rooms', {
_id: "000000000000000000000002",
number: 9,
floor: 0
})
.expectStatus(200)
.toss();
}
getDataUser();
Функция test() должна запускаться после закрытия БД, но я получаю следующий результат:
Завершено за 0 секунд, 0 тестов, 0 подтверждений, 0 сбоев, 0 пропущено. Подключено к базе данных virtus-app@email.com
Результаты теста должны появиться после моих выходов console.log. Я считаю, что тесты не запускаются, и если они запускаются, это прежде, чем я получу данные.
Любая помощь?
1 ответ
Мы столкнулись с точно такой же проблемой с frisbyjs, не хватает BDD-хуков, таких как before
а также after
для сбора данных и очистки всего, что создано в тестах.
Я закончил тем, что создал Chakram ( https://github.com/dareid/chakram), который предоставляет перехватчики BDD и использует обещания, так что более сложные тесты могут быть легко написаны.