【问题标题】:Is it possible to stub meteor methods and publications in cypress tests?是否可以在柏树测试中存根流星方法和出版物?
【发布时间】:2021-08-25 15:43:30
【问题描述】:

是否可以在 cypress 测试中存根流星方法和出版物?

在文档 (https://docs.cypress.io/guides/getting-started/testing-your-app#Stubbing-the-server) 中说:

这意味着不是重置数据库,或者使用 我们想要的状态,您可以强制服务器以任何方式响应 你想要它。 (...) 甚至可以测试所有边缘情况,而无需服务器。

但是我没有找到更多的细节。我所能找到的是,当测试中不使用虚拟用户填充数据库时,可以在应用程序上调用 API 调用,如下所示:

cy.request('POST', '/test/seed/user', { username: 'jane.lane' })
      .its('body')
      .as('currentUser')

在我看来,这不是“存根”。这是一种“播种”数据库的方法。

是否可以告诉 cypress 在客户端代码中回答流星方法,例如

Meteor.call('getUser', { username: 'jane.lane' }, callbackFunction);

有了一些数据,它会在生产中回馈吗?

【问题讨论】:

    标签: meteor cypress


    【解决方案1】:

    我只能展示一个使用sinon 来存根 Meteor 方法调用的示例:

    const stub = sinon.stub(Meteor, 'call')
    stub.callsFake(function (name, obj, callback) {
     if (name === 'getUser' && obj.username === 'jane.lane') {
       setTimeout(function () {
         callback(/* your fake data here */)
       })
     }
    })
    

    这将是一个客户端存根。你也可以简单地为这个测试覆盖你的 Meteor 方法。

    【讨论】:

    • 似乎无法在 cypress 测试中导入 Meteor (import { Meteor } from 'meteor/meteor';)。我得到Error: Webpack Compilation Error ./specs/cypress/integration/tests/login_spec.js Module not found: Error: Can't resolve 'meteor/meteor'
    猜你喜欢
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 2017-09-27
    相关资源
    最近更新 更多