Je suis nouveau pour me moquer d'objets, et j'essaie d'apprendre à les utiliser dans RSpec. Quelqu'un peut-il envoyer un exemple (un bonjour, exemple de type monde d'objet Mock RSpec), ou un lien (ou toute autre référence) sur la façon d'utiliser l'API d'objet maquette RSpec?
Réponses
Trop de publicités?Voici un exemple d'une simple maquette que j'ai fait pour un contrôleur de test dans une application rails:
before(:each) do
@page = mock_model(Page)
@page.stub!(:path)
@page.stub!(:find_by_id)
@page_type = mock_model(PageType)
@page_type.stub!(:name)
@page.stub!(:page_type).and_return(@page_type)
end
Dans ce cas, je suis en se moquant de la Page & PageType modèles (Objets) ainsi que de déraciner quelques méthodes de je appel.
Cela me donne la possibilité d'exécuter un des tests de ce genre:
it "should be successful" do
Page.should_receive(:find_by_id).and_return(@page)
get 'show', :id => 1
response.should be_success
end
Je sais que cette réponse est plus les rails spécifiques, mais j'espère que ça vous aide un peu.
Modifier
Ok, donc voici un exemple hello world...
Étant donné le script suivant (bonjour.rb):
class Hello
def say
"hello world"
end
end
Nous pouvons créer la spécification suivante (hello_spec.rb):
require 'rubygems'
require 'spec'
require File.dirname(__FILE__) + '/hello.rb'
describe Hello do
context "saying hello" do
before(:each) do
@hello = mock(Hello)
@hello.stub!(:say).and_return("hello world")
end
it "#say should return hello world" do
@hello.should_receive(:say).and_return("hello world")
answer = @hello.say
answer.should match("hello world")
end
end
end
Je n'ai pas assez de points pour poster un commentaire pour une réponse, mais je voulais dire que l'on a accepté la réponse m'a aussi aidé à essayer de comprendre comment stub dans une valeur aléatoire.
J'avais besoin d'être en mesure de stub une instance de l'objet de valeur qui est attribuée de façon aléatoire par exemple:
class ClumsyPlayer < Player do
def initialize(name, health = 100)
super(name, health)
@health_boost = rand(1..10)
end
end
Ensuite dans mon spec j'ai eu un problème à comprendre comment stub maladroit d'un joueur aléatoire de la santé pour tester que, lorsqu'ils reçoivent un soin, ils obtiennent le bon coup de pouce pour leur santé.
Le truc, c'était:
@player.stub!(health_boost: 5)
De sorte qu' stub!
a la clé, j'avais été tout simplement à l'aide de stub
et était encore en train aléatoire rspec réussites et des échecs.
Merci donc de Brian
http://rspec.info/documentation/mocks/
http://rspec.info/documentation/mocks/stubs.html est ce que j'utilise généralement, bien que ce ne soit pas une indication de la qualité.