小编Bry*_*Ash的帖子

RSpec Ruby中关键字"应该"究竟是什么?

我是Ruby的初学者,有这个问题唠叨了我很久.

在RSpec文件中,如果我们写Book.should <do something>,should关键字是什么?它是Book对象的成员吗?它是如何成为Book对象的成员的?或者它是Ruby的一些构造?这是一个功能吗?如果它是函数或成员,我在哪里可以找到它的定义?

ruby rspec

10
推荐指数
1
解决办法
4638
查看次数

React 测试库 确保在进行新的调用之前等待之前的 act() 调用

我为选择编写了一个测试,并收到此警告。在我的测试中,我正在等待表演结束。为什么我会收到此错误?

警告:您似乎有重叠的 act() 调用,这是不支持的。在进行新的调用之前,请务必等待之前的 act() 调用。

test('Selection should be have the correct number of options', async () => {
  const leftClick = { button: 0 };
  const { options } = makeSUT();
  const selection = screen.getByLabelText('MultiSelection');

  // open all option
  act(() => {
    userEvent.click(selection, leftClick);
  });
  // await wait();

  options.forEach(async (option, index) => {
    if (index === 0) {
      expect((await screen.findAllByText(option.label)).length).toEqual(1);
    } else {
      expect((await screen.findAllByText(option.label)).length).toEqual(1);
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

谢谢

unit-testing reactjs testing-library

10
推荐指数
1
解决办法
2万
查看次数

如何使用FactoryBot定义嵌套工厂?

给定两个模型,Alert和Zipcode,其中一个Alert必须有1个或更多Zipcodes:

class Alert < ActiveRecord::Base
  attr_accessible :descr, :zipcode

  has_many :zipcode
  validates :zipcode, :length => { :minimum => 1 }
end

class Zipcode < ActiveRecord::Base
  attr_accessible :zip
  belongs_to :alert
end 
Run Code Online (Sandbox Code Playgroud)

如何编写FactoryBot工厂,以便:

  • Zipcode工厂在他们自己的文件中定义
  • 警报工厂在其自己的文件中定义
  • 警报可以依赖Zipcode定义的工厂吗?

我读过的所有文档和示例都希望您在父工厂文件中定义包含的类,将它们全部组合在一起,或者进行其他一些折衷或解决方法.是不是有一个干净的方法来保持规格工厂分开?

ruby rspec ruby-on-rails-3 factory-bot

9
推荐指数
1
解决办法
4347
查看次数

如何从数组中删除一系列值?

如果array = [1, 2, 3, 4, 5, 6, 7, 8, 9],我想从数组中删除一系列元素.

例如:我想删除索引在该2..5数组范围内的所有元素,结果应为[1, 2, 7, 8, 9]

提前致谢.

ruby arrays

9
推荐指数
1
解决办法
6806
查看次数

Rails 3 Cocoon link_to_add_association渲染部分两次

正如预期的那样,我的部分渲染两次而不是一次.有什么想法吗?

这是我的人物观点

<%= simple_nested_form_for(@person) do |f| %>
  <%= f.error_notification %>

  <div class="form-inputs">

    <%= f.input :name %>

    <h3>Records by year</h3>

    <div id='records'>
      <%= f.simple_fields_for :records do |record| %>
        <%= render 'record_fields', :f => record %>
      <% end %>

      <div class='links'>
        <%= link_to_add_association 'New Record', f, :records, :class => 'btn' %>
      </div>
    </div>

  </div>

  <div class="form-actions">
    <%= f.button :submit %>
  </div>
<% end %>
Run Code Online (Sandbox Code Playgroud)

模型(删除常量和验证等内容):

class Person < ActiveRecord::Base

    attr_accessible :name, :records_attributes

    has_many :records, :dependent => :destroy
    accepts_nested_attributes_for :records, :reject_if => :all_blank, …
Run Code Online (Sandbox Code Playgroud)

nested-attributes ruby-on-rails-3 cocoon-gem

7
推荐指数
1
解决办法
3640
查看次数

Cocoon添加关联,如何限制关联数量

我正在创建一个使用Ruby/Rails/HAML存储卡的系统 - 在这种情况下,有一个Card类有很多颜色(这也是一个类).在创建和编辑卡片时,我正在使用Cocoon gem来动态添加颜色关联.

我遇到的问题是,在卡片型号中,卡片最多只能有5种颜色.然而,界面允许添加无限的颜色,从而导致错误.

在Cocoon中是否有办法限制可以添加到表单的关联数量,以便不超过此限制?

这是添加/编辑卡片的表单代码

 = simple_form_for @card, multipart: true do |c|
  = c.input :name, label: "Name of the card"
  = c.input :cost, label: "Cost of the card"
  #colours
   = c.simple_fields_for :colours do |colour|
    = render "colour_fields", f: colour
   .links
    = link_to_add_association 'add colour', c, :colours
Run Code Online (Sandbox Code Playgroud)

这是colour_fields形式

.nested-fields
 = f.input :value, as: :select, collection: Colour::VALUES, selected: f.object.value, include_blank: false
 = link_to_remove_association "remove colour", f
Run Code Online (Sandbox Code Playgroud)

提前致谢.

ruby haml ruby-on-rails simple-form cocoon-gem

6
推荐指数
1
解决办法
4949
查看次数

如何在rails 4中使用update_attributes?

目前我正在将我的应用程序从rails 3.2升级到rails 4.出现以下错误.

ArgumentError (argument out of range):
Run Code Online (Sandbox Code Playgroud)

由于以下代码行而发生此错误

@lease.update_attributes(params[:lease])
Run Code Online (Sandbox Code Playgroud)

我试过更新,也抛出相同的错误.是否从rails 4中删除了update_attributes.如何使用它?

码:

def terms_build_methods
  if @lease.blank?
    @lease = params[:current_lease_id].present? ? Lease.find_by_id(params[:current_lease_id].to_i) : Lease.create(params[:lease])
  else
    @lease.update(lease_params)
  end
  Lease.update_lease_occupancy_type(@lease)
  Lease.update_lease_status(@lease)
end

private

def lease_params
  params.require(:lease).permit!
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails upgrade ruby-on-rails-4

6
推荐指数
1
解决办法
7938
查看次数

在rails应用程序中更改ActiveRecord :: Base.inheritance_column

我想使用除了以外的列使用单表继承type.根据Rails文档 - http://api.rubyonrails.org/classes/ActiveRecord/Base.html,我可以通过修改来做到这一点ActiveRecord::Base.inheritance_column.我怎样才能做到这一点?

activerecord ruby-on-rails single-table-inheritance

6
推荐指数
1
解决办法
3648
查看次数

使用rspec和capybara通过cocoon动态添加测试字段

我想知道是否有人测试由cocoon动态添加的字段?

这是一个很好的节省时间,但动态添加的所有字段都有很长的数字添加到ID和名称.这意味着我必须跳过在页面上需要多个(一组)字段的测试.

rspec ruby-on-rails capybara cocoon-gem

6
推荐指数
2
解决办法
2822
查看次数

检查Rakefile中是否存在rake任务

我正在寻找一种能够检查Rakefile中是否存在某个rake任务的方法.我有一个任务依赖项,如果该任务可用,我只想将其作为依赖项包含在内.在这种特殊情况下,该任务仅在Rails项目中可用,但我希望我的rake任务也可以在更通用的Ruby应用程序环境中工作(不仅仅是Rails).

我想做这样的事情:

if tasks.includes?('assets:precompile')
  task :archive => [:clean, :vendor_deps, 'assets:precompile']
    ...
  end
else
  task :archive => [:clean, :vendor_deps]
    ...
  end
end
Run Code Online (Sandbox Code Playgroud)

在rake任务中有条件地包含任务依赖的最佳方法是什么?

ruby rake rakefile

6
推荐指数
2
解决办法
2270
查看次数