【问题标题】:How do I create a rails association for cypress testing?如何为 cypress 测试创建 Rails 关联?
【发布时间】:2022-01-10 12:41:43
【问题描述】:

我正在尝试在我的网络应用程序的一个特定页面上测试表单。问题是这个网页至少依赖于数据库中的三个模型对象,原因我将详细说明,而且由于我是赛普拉斯的新手进行测试,我不完全确定如何去做.所以这里是问题领域:

 describe('Basic SSL Certificate', () => {
  context('csr submission', () => {
    beforeEach(() => {
      cy.request('POST', 'user_session/user_login', { login: 'testuser', password: 'Testing_ssl+1'})
        .as('currentUser')
      cy.appFactories([
        ['create', 'certificate_order']
      ]).as('certificateOrder')
    })

    it('rejects a numerical ip address for its csr', () => {
     cy.visit(`/team/${this.certificateOrder.ssl_account.ssl_slug}/certificateOrders/${this.certificate_order.ref}/edit`);

首先,我面临的问题是这里简单的一行测试代码:

cy.visit(`/team/${this.certificateOrder.ssl_account.ssl_slug}/certificateOrders/${this.certificate_order.ref}/edit`);

我需要点击以下网址,看起来像这样/teams/abcd-xyz/certificate_orders/co-ref-1234/edit

问题:如何创建与 cypress 的 Rails 关联?在我之前的区块中,我认为我创建了一个证书订单,这与创建时是否有关联?我是否必须使用appFactories 单独创建每个模型,如果需要,我如何将它们“链接”在一起?

我看不到在这段代码中结合 ruby​​ 和 javascript 的方法,并且可以使用指针来设置工厂。通常在 rspec 中我会创建我需要的模型并使用它们,但在 cypress 中我不确定如何执行此操作,因为它似乎不是使用 JS 执行此操作的正确方法。有用的建议将不胜感激,谢谢。

【问题讨论】:

    标签: ruby-on-rails cypress


    【解决方案1】:

    有几种方法可以设置关联:

    • 设置外键
    • 使用瞬态属性
    • 使用嵌套属性

    我在这篇文章中提供了所有 3 个示例:https://medium.com/nexl-engineering/setting-up-associations-with-cypress-on-rails-and-factorybot-3d681315946f

    我首选的方法是使用瞬态属性,因为它在 Cypress 中非常易读

    例子:

    FactoryBot.define do
      factory :author do
        name { 'Taylor' }
      end
    
      factory :post do
        transient do
          author_name { 'Taylor' }
        end
        title { 'Cypress on Rails is Awesome' }
        author { create(:author, name: author_name ) }
      end
    end
    

    然后在 Cypress 中您可以执行以下操作:

    // example with overriding the defaults
    cy.appFactories([['create', 'post', { title: 'Cypress is cool', author_name: 'James' }]]
    
    // example without overriding
    cy.appFactories([['create', 'post']]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-25
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 2022-06-29
      • 1970-01-01
      • 2012-09-18
      相关资源
      最近更新 更多