目前,我的自动化框架使用了来自cucumberJS的量角器。我们使用chai作为断言库,最近我遇到了对数据库执行直接mysql查询的需要。
我将如何构造一个步骤定义,以便能够获得一个查询,并在同一步骤中使用查询结果?当前的斗争是运行量角器的异步方式,导致我在需要查询结果的步骤发生后执行查询,以及传递作为查询结果创建的JSON对象的范围。
this.loginWithMysqlUser = function(uname) {
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : '*******',
password : '*******',
database : '*******'
});
connection.connect();
connection.query('SELECT * FROM prot_users WHERE username = ?', [uname], function(err, rows) {
if(err) throw err;
mysqlUser = {
username: rows[0].username,
password: rows[0].password
};
});
connection.end();
loginpage.login(mysqlUser);
};此函数驻留在loginpage声明中。
发布于 2014-10-29 14:10:59
最后,我包含了登录的所有逻辑和需要在connection.query函数中处理数据的函数。
似乎工作正常,量角器可以从查询函数中调用。
发布于 2015-04-27 18:35:34
因此,通常您的黄瓜测试脚本希望:
Feature: As an admin I would like to check if a customer has an
account
Scenario: Check that customer name is registered in DB
Given that I am logged in as admin
And I wish to check that customer (foo) is registered
Then I expect following details from DB query:
| username | password | database |
| foo | bar | mysql |具有以下步骤的定义:
Given(/^that I am logged in as admin$/, function(callback){
..
logic goes here
..
});
And(/^I wish to check that customer (foo) is registered$/,
function(username, callback){
// create connection with db as described
// with supplied username
// Use a promise to create mySQL connection
// and queries DB based on username as described
// on successful resolution set DBResult to results
// for username, password and database
// on error set DBResult to undefined
});
Then(/^I expect following details from DB query$/, function(data,
callback)
{
var rows = data.raw;
// extract values of input table cells into DBExpect using
// rows[0].username
// rows[0].password
// rows[0].database
// Check equality of DBResult and DBExpect objects
..
expect.isFulfilled(DBResult).toEqual(DBExpect).notify(callback);
});https://stackoverflow.com/questions/26486977
复制相似问题