小编mr_*_*cle的帖子

Rspec rubocop 错误“更喜欢使用验证双打而不是正常双打”

我有一个 RSpec 测试

let(:mail_instance) { double(deliver_later: nil) }

before do
  allow(ConfirmationMailer).to receive(:send_email).and_return(mail_instance)
  allow(mail_instance).to receive(:deliver_later)
end

it 'calls mailer, and delivers the mail' do
  call_endpoint
  expect(mail_instance).to have_received(:deliver_later)
end
Run Code Online (Sandbox Code Playgroud)

它运行良好,但我遇到了 rubocop 错误 - prefer using verifying doubles over normal doubles。根据文档https://www.rubydoc.info/gems/rubocop-rspec/1.7.0/RuboCop/Cop/RSpec/VerifiedDoubles我应该instance_double改用,但如果我更改它,我的规格会出现错误:

ArgumentError: Module or String expected, got {:deliver_later=>nil}

ruby rspec ruby-on-rails

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

Ruby 仅返回 2 天前之前的日期 - 2:Integer 的未定义方法“days”

我在下面排列我只想获取早于 2.days.ago 的日期

data = ["2020-02-21T07:52:14.114+0100",
 "2020-02-19T13:20:50.539+0100",
 "2020-02-11T12:36:16.565+0100",
 "2020-02-17T20:06:53.312+0100",
 "2020-02-04T09:42:30.754+0100",
 "2020-01-29T13:46:16.033+0100",
 "2020-02-18T11:15:12.894+0100"]
Run Code Online (Sandbox Code Playgroud)

我试图用下面的代码来做到这一点:

data.select { |data| data if DateTime.parse(data) > 2.days.ago }

但我收到一个错误:

NoMethodError: 2:Integer 的未定义方法“天”

ruby

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

Rubocop - 禁用注释代码的长长度

不知道为什么,但 rubocop 获取注释中行的长度并向我们显示错误:

config/initializers/devise.rb:116:121: C: Layout/LineLength: Line is too long. [150/120]
  # config.secret_key = '0cfe0f176132fc4ef87b7fc01d8e65b31a74d3e41d5df18cccd20d1a65f447a28d41744cf8ed9e99a704c449f930673f297fe2ee4dbffa7c7162ba24baa5359a'
                                                                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

我应该以.rubocop.yml某种方式禁用它吗?

ruby-on-rails rubocop

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

GraphQL::Client::ValidationError:变量 $id 和参数 eq 的类型不匹配(String!/ ItemId)

我想从 DatoCMS 获取特定数据,因此需要在 GraphQL 查询中传递一个参数。问题是我收到一个错误:

GraphQL::Client::ValidationError: Type mismatch on variable $id and argument eq (String! / ItemId)
Run Code Online (Sandbox Code Playgroud)

我正在使用 rubygraphql-client​​ gem 来提出这个请求(可能这并不重要),这是我第一次使用 Graphql。

下面是我的查询:

query($id: String!) {
  allTexts(filter: {id: {eq: $id}}) {
    title
    isSeparateActivity
    shortDescription
    longDescription
    text {
      article
    }
    author
    _updatedAt
    _createdAt
    length
  }
}
Run Code Online (Sandbox Code Playgroud)

如果我更改query($id: String!)query($id: ID!)我会收到新错误:

GraphQL::Client::ValidationError: ID isn't a defined input type (on $id)
Run Code Online (Sandbox Code Playgroud)

ruby graphql

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

Rails CSV 生成器 - 2019 年 6 月 17 日星期一 14:16:10 CEST +02:00:Time in 的未定义方法 `collect'

我有用于管理日志的 CSV 生成器。当我运行测试时出现错误

1) CsvAdminLogData::CsvAdminLogGenerator 创建具有正确值的 CSV 文件失败/错误:csv << admin_log.created_at

NoMethodError:2019 年 6 月 17 日星期一 14:16:10 CEST +02:00:Time 的未定义方法 `collect'

def call
  CSV.open(target_file, 'w', headers: LOG_HEADERS, encoding: 'UTF-8') do |csv|
    AdminPanelLog.dates_between(start_date, end_date).find_each do |admin_log|
      csv << admin_log.created_at
      csv << admin_log.action_type
      csv << admin_log.admin_email
      csv << admin_log.old_data
      csv << admin_log.new_data
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我尝试过类似admin_log.created_at.to_s但没有任何结果的事情。在这种情况下,我不能<<用来将此数据添加到 CSV 文件中?

编辑:

如果我发表评论,# csv << admin_log.action_type我将在另一行收到相同的错误

失败/错误:csv << admin_log.action_type NoMethodError:未定义“New”的方法`collect':字符串

ruby ruby-on-rails

0
推荐指数
1
解决办法
1010
查看次数

标签 统计

ruby ×4

ruby-on-rails ×3

graphql ×1

rspec ×1

rubocop ×1