2011-06-14 1 views
0

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?

Répondre

0

Oui, vous devez injecter quelque chose. Que ce soit une usine pour créer les fichiers ou les fichiers eux-mêmes, c'est à vous de décider. Une fois que vous faites cela, vous pouvez simuler l'usine dans vos tests.

1

This SO answer inclut de se moquer de la classe File avec Mockito, peut-être que cela aidera.

Questions connexes