gre*_*egf 2 ruby testing rspec
我有一个测试TypeError: no impliciit conversion of String into Array,当它命中我的代码的特定部分时返回。如果我在rspec之外运行代码,则它运行得很好,所以我不确定为什么会这样。
require 'spec_helper'
require 'digital_ocean_size_list'
describe Chef::Knife::DigitalOceanSizeList do
subject { Chef::Knife::DigitalOceanSizeList.new }
let(:access_token) { 'FAKE_ACCESS_TOKEN' }
before :each do
Chef::Knife::DigitalOceanSizeList.load_deps
Chef::Config['knife']['digital_ocean_access_token'] = access_token
allow(subject).to receive(:puts)
end
describe "#run" do
it "should validate the Digital Ocean config keys exist" do
expect(subject).to receive(:validate!)
subject.run
end
....
Run Code Online (Sandbox Code Playgroud)
正在测试以下代码
require 'chef/knife/digital_ocean_base'
class Chef
class Knife
class DigitalOceanSizeList < Knife
include Knife::DigitalOceanBase
banner 'knife digital_ocean size list (options)'
def run
$stdout.sync = true
validate!
size_list = [
ui.color('Slug', :bold)
]
client.sizes.all.each do |size|
size_list << size.slug.to_s
end
puts ui.list(size_list, :uneven_columns_across, 1)
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
类型错误来自client.sizes.all.each。代码运行良好,只有来自rspec的类型错误。
小智 5
更改
size_list << size.slug.to_s
Run Code Online (Sandbox Code Playgroud)
至
size_list << [size.slug.to_s]
Run Code Online (Sandbox Code Playgroud)
在我的情况下,发生错误是因为我输入数组中的值不具有[],所以我将其包装起来[]就可以了。
| 归档时间: |
|
| 查看次数: |
12957 次 |
| 最近记录: |