[英]Create a Ruby RSpec test case for file input
我有一個文本文件,打算將其轉換為CSV(在這種情況下)格式。 如何創建適當的RSpec測試,以查看輸出是否采用以下情況的正確格式?
這是我的代碼:
class ProcessLog
@@log = Array.new
def read_log(log)
if File.exists?(log)
f = File.open(log, "r")
f.each_line { |line| @@log << line.strip }
end
end
def process_log
result = Array.new
@@log.each do |line|
<convert to csv>
result << <converted to csv>
end
result
end
end
describe ProcessLog do
before do
@pl = ProcessLog.new
<help>
end
it 'should pass first format' do
text = "Item X has a price of $ per gram" # just as an example
<help>
@pl.read_log("file.log")
@pl.should == 'X,$,gram'
end
end
首先,當您需要實例變量( @log
)時使用類變量( @@log
)。 但是,實際上沒有理由使用兩者。
我會像這樣拆分這些方法,以便您可以單獨測試它們:
現在,您的方法緊密耦合,因為它們都使用實例變量,這使測試變得比需要的難(您必須設置或偽造對第一個方法的調用才能開始測試第二個方法)。
您可以使用FakeFS之類的東西測試第一種方法,以讀取(假)文件的內容。 確實,盡管此方法應該相當簡單,並且您可能根本不必進行測試。
當您刪除第一種方法的聯軸器時,第二種方法更易於測試。 從您希望解析的文件中創建一個行數組,並將其傳遞給該方法,然后檢查結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.