軽めのネタ。例えば、次のようなread_data
というメソッドがあるとします。
class MyTest def read_data File.open("hoge.txt").read end end
このread_data
のテストをRSpecで書くかというお話。なんとなくhoge.txt
というものは用意したくない。
StringIOを使って次のように書きました。
require "rspec" require_relative "my_test" describe MyTest do context "read_data" do it "return test data" do file = StringIO.new("aaa") allow(File).to receive(:open).and_return(file) expect(MyTest.new.read_data).to eq("aaa") end end end
環境は
で確認。