【发布时间】:2016-05-22 17:50:48
【问题描述】:
我正在编写一个脚本来自动对计算机上的文件进行排序,例如屏幕截图。我在 Mac 上。因此,每当我截取屏幕截图时,它都会在我的桌面上创建。该脚本的部分目的是不时清理桌面。
我见过的大多数 Ruby 脚本都是无类的 (har har),但我决定对我的脚本进行分类,这样我就可以使用 RSpec 和 TDD 来测试一切,练习我的 RGR 循环。
在名为“Mover”的类中对名为“chdir”的方法运行 RSpec 测试时收到此错误:
Failures:
1) Mover#chdir changes the directory
Failure/Error: chdir(@mover.target_dir)
NoMethodError:
undefined method `chdir' for #<RSpec::ExampleGroups::Mover::Chdir:0x007ffae608f898> # ./spec/models/mover_spec.rb:18:in `block (3 levels) in <top (required)>'
代码本身:
class Mover
$home = Dir.home
attr_accessor :file_type, :working_dir, :target_dir
def initialize(file_type, working_dir, target_dir)
@file_type = file_type
@working_dir = working_dir
@target_dir = target_dir
end
def chdir(dir)
end
end
mover = Mover.new("/Screen Shot\s\d*.\d*.\d*\sat\s.*.png/g", "Desktop", "/Desktop/screenshots")
然后是规格:
describe Mover do
before do
@mover = Mover.new("/Screen Shot\s\d*.\d*.\d*\sat\s.*.png/g", "Desktop", "/Desktop/screenshits")
end
describe "#initialize" do
it "Initializes the object." do
expect( @mover.class.name ).to eq("Mover")
end
end
describe "#chdir" do
it "changes the directory" do
#chdir(@mover.target_dir)
end
end
end
有问题的行被注释掉了。老实说,我很难理解为什么会这样。任何帮助将不胜感激。
链接到 github repo,以防万一:https://github.com/swolegrammer/ruby-file-mover
【问题讨论】: