![](/img/trans.png)
[英]How to pass a variable retrieved from 1 protractor test script to another
[英]How to pass object retrieved from mongo db to the test in javascript
我正在研究 NodeJS 測試自動化項目。 我的目標是從 Mongo DB 獲取數據並在測試中使用它。 我成功地從數據庫中查詢了數據,但到目前為止我還沒有將這些值傳輸到測試中。
我的 Mongo DB halper (mongodbHelper.js):
var MongoClient = require('mongodb').MongoClient;
var url = "myurl";
var data;
const getTestData = async function(){
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
dbo.collection("my_test_collection").findOne({"testId": "test_01"}, function(err, result) {
if (err) throw err;
db.close();
data= result;
console.log(data); // This print prints correct data
return result;
});
});
}
module.exports =
{
getTestData
}
處理程序內的打印正確打印檢索到的數據。 現在我需要在下面的測試套件中使用它。 我想在 Before 方法中啟動 testData 變量並在測試中使用它。 如果我按以下方式進行操作,則測試中的打印打印未定義。 它在幫助程序中正確打印之前打印它。 所以我認為這是一個同步問題。
const mongodb = require('./mongodbHelper');
var testData;
describe('Playwright with Mocha Demo', function() {
before('name', async function() {
testData = await mongodb.getTestData();
console.log(testData); // Here it prints 'undefined'
});
....
請告知我如何將數據從處理程序正確傳遞到測試中的 testData 變量。
您沒有從異步 function getTestData
返回任何內容。
Mongo 調用是異步的,但您使用的是回調 function。 您可以將回調 function 傳遞給getTestData
並使用數據調用它(您正在執行控制台日志)。 然而,Mongo 調用返回 Promises,所以你可以這樣做:
const getTestData = async function() {
const db = await MongoClient.connect(url);
const dbo = db.db("mydb");
const result = await dbo.collection("my_test_collection").findOne({"testId": "test_01"});
db.close();
return result;
});
然后在您的測試中,您可以使用以下方法檢索數據:
testData = await mongodb.getTestData();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.