我有一个 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}
我在下面排列我只想获取早于 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 的未定义方法“天”
不知道为什么,但 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某种方式禁用它吗?
我想从 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) 我有用于管理日志的 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':字符串