#mysql #cypress
#mysql #cypress
Вопрос:
Я пытался подключиться к базе данных Mysql из cypress, выполнил следующие шаги для того же.
Шаг 1: добавлена библиотека MySQL в cypress
Шаг 2: добавлен следующий код в plugins/index.js файл (это я получил при поиске в Google)
const mysql = require('mysql')
function queryTestDb(query, config) {
// creates a new mysql connection using credentials from cypress.json
env's
const connection = mysql.createConnection(config.env.db)
// start connection to db
connection.connect()
// exec query disconnect to db as a Promise
return new Promise((resolve, reject) => {
connection.query(query, (error, results) => {
if (error) reject(error)
else {
connection.end()
// console.log(results)
return resolve(results)
}
})
})
}
module.exports = (on, config) => {
// Usage: cy.task('queryDb', query)
on('task', {
queryDb :query => {
return queryTestDb(query, config)
},
})
}
Шаг 3: добавлены следующие зависимости в cypress.json
"env" : {
"db": {
"host": "name",
"user": "user",
"password": "password"
}
}
Шаг 4: добавлен следующий код в spec.js файл
it('Verify the retrieved data', () => {
cy.task('queryDb','select * from soandso where soandso = value').then((resp) => {
console.log(resp.rows)
})
})
Но при запуске файла спецификации появляется следующая ошибка
cy.task('queryDb') failed with the following error: > ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
Пожалуйста, помогите мне исправить эту ошибку.
Комментарии:
1. Нет. Я снова перепроверил. Существует только один module.exports =
2. файл спецификации находится в cypressintegrationtestcasesfilename.spec.js Файл плагина находится в C:UsersUserNameProjectNamecypresspluginsindex.js (При ошибке отображался абсолютный путь, я добавил его как относительный путь)
3. как вы запускаете это с помощью run или open? существует незавершенная строка env, которая удаляет
4. то же самое со мной, посмотрите, добавляете ли вы в cypress / plugins / index itslef не в какую-либо другую папку плагинов
5. Теперь я понял, что я добавил в support/index.js , а не в plugins/index.js Исправьте это и повторите попытку. На этот раз я получил следующую ошибку. cy.task(‘queryDb’) завершилась ошибкой со следующей ошибкой: > ER_NOT_SUPPORTED_AUTH_MODE: клиент не поддерживает протокол аутентификации, запрошенный сервером; рассмотрите возможность обновления клиента MySQL
Ответ №1:
можете ли вы проверить свою зависимость в package.json?
Он должен иметь sth, как показано ниже.
«зависимости»: { «mysql»: «^ 2.18.1» }
Если у вас нет этой зависимости, вам нужно запустить «npm install mysql».