我有使用参数(电子邮件和令牌)的路由,我想在frisby测试中传递它们,但在运行测试之前,我必须在我的数据库(mongo)中获取这些数据。
问题是我在获取数据之前运行(或不运行)测试。
以下是代码:
/* 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()应该在db关闭后运行,但我得到以下结果:
在0秒内完成 0次测试,0次断言,0次失败,0次跳过 连接到数据库 virtus-app@email.com
测试结果应该出现在我的console.log输出之后。我相信测试不会运行,如果它们运行,它就在我获取数据之前。
任何帮助?
答案 0 :(得分:1)
我们遇到了与frisbyjs完全相同的问题,缺少像before
和after
这样的BDD钩子来收集数据并清理测试中创建的任何内容。
我最终创建了Chakram(https://github.com/dareid/chakram),它提供了BDD钩子并利用了promises,因此可以轻松编写更复杂的测试。