J'essaye d'écrire du code comme l'exemple ci-dessous, mais en Java au lieu de Ruby et Mockito au lieu de RSpec.Approche de test - Ruby/RSpec vs Java/Mockito
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
En RSpec je peux bouchonner File.new, mais je ne pense pas que je peux le faire en Mockito?
Dois-je utiliser une fabrique pour créer les objets Fichier à la place, injecter l'usine en tant que dépendance, puis remplacer cette fabrique pour les tests?