【问题标题】:Is there anyway to query mongodb in cypress test?无论如何在柏树测试中查询mongodb?
【发布时间】:2020-01-15 00:18:01
【问题描述】:

我希望通过 cypress test 与 mongodb 进行交互。我找不到任何有用的文档。请帮助我如何实现这一目标?

【问题讨论】:

    标签: cypress


    【解决方案1】:

    查看他们关于任务的文档:https://docs.cypress.io/api/commands/task.html#Command

    我需要用 mongodb 做一些事情,我设法连接做这样的事情(在“插件”目录中):

    const MongoClient = require('mongodb').MongoClient;
    module.exports = (on, config) => {
      on('task', {
        updateTask (id) {
          return new Promise((resolve) => {
            MongoClient.connect('mongodb://localhost:27017', (err, client) => {
              if (err) {
                console.log(`MONGO CONNECTION ERROR: ${err}`)  
                throw err;
              } else {
                const db = client.db('myDB');
                db.collection('someCollection').count({}, function(error, numOfDocs){              
                  resolve({success: numOfDocs})
                  client.close();
                 })
              }
            });
          }); // end of return Promise
        }
      }) // end of task
    }
    

    你在“规范”中这样称呼它:

    cy.task('updateTask', someParam).then((textOrNull) => {   
      console.log(textOrNull) 
    })
    

    【讨论】:

      【解决方案2】:

      从你的 cypress 测试中执行一个 shell 命令:

      https://docs.cypress.io/api/commands/exec.html#Syntax

      示例: cy.exec(mongo mydatabase --eval 'db.collection.find({})')

      【讨论】:

        【解决方案3】:

        现在有一个用于 cypress 的 mongodb 插件:https://www.npmjs.com/package/cypress-mongodb

        配置完成后,您就可以调用cy 命令在本地或远程数据库中执行操作:

        cy.createCollection(...);
        cy.dropCollection(...);
        cy.insertMany(...);
        cy.aggregate(...);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-09-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多