Подход к тестированию - Ruby / RSpec против Java / Mockito - PullRequest
0 голосов
/ 14 июня 2011

Я пытаюсь написать некоторый код, как в примере, показанном ниже, но в Java вместо Ruby и Mockito вместо RSpec.

require 'rubygems'
require 'rspec'

class MyUtils
  def self.newest_file(files)
    newest = nil
    files.each do |file|
      if newest.nil? || (File.new(file).mtime > File.new(newest).mtime)
        newest = file
      end
    end
    newest
  end
end

describe MyUtils do
  it "should return the filename of the file with the newest timestamp" do
    file_a = mock('file', :mtime => 1000)
    file_b = mock('file', :mtime => 2000)
    File.stub(:new).with("a.txt").and_return(file_a)
    File.stub(:new).with("b.txt").and_return(file_b)
    MyUtils.newest_file(['a.txt', 'b.txt']).should == 'b.txt'
  end
end

В RSpec я могу заглушить File.new, но нене думаете, что я могу сделать это в Mockito?

Должен ли я вместо этого использовать фабрику для создания объектов File, добавить фабрику в качестве зависимости и затем заглушить эту фабрику для тестов?

Ответы [ 2 ]

1 голос
/ 14 июня 2011

Этот SO-ответ включает насмешку над классом File с помощью Mockito, возможно, это поможет.

0 голосов
/ 14 июня 2011

Да, вам нужно что-то ввести.Будь то фабрика для создания файлов или сами файлы, решать только вам.Как только вы это сделаете, вы можете высмеивать фабрику в своих тестах.

...