2014-10-21 3 views
0

В настоящее время в моей системе автоматизации используется транспортир из cucumberJS. Мы используем chai как обещанную как библиотеку утверждений, и недавно я столкнулся с необходимостью делать прямые запросы mysql к базе данных.Транспортир + CucumberJS MySQL Query

Как бы я мог структурировать определение шага, чтобы иметь возможность получить запрос, и использовать результаты запроса на одном и том же этапе? Моя текущая борьба - это асинхронный протранслятор пути, заставляющий меня выполнить запрос после шага, требующего результатов запроса, а также область действия для передачи объекта 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); 

    }; 

Эта функция хранится в объявлении для входа в систему.

ответ

0

В итоге я включил всю логику для входа и функций, необходимых для работы с данными в функции connection.query.

Казалось, что он работает нормально, и из этой функции запроса был вызван транспортир.

1

Так обычно ваш огурец тестовый скрипт хотел бы:

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); 
}); 
Смежные вопросы