Храните данные в переменной для использования в 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 и использует обещания, так что более сложные тесты могут быть легко написаны.

Другие вопросы по тегам