2011-07-25 5 views
1

J'ai du mal à obtenir un comportement cohérent de Mocha et la méthode regexp_matches. Si autotest exécute toute ma suite de tests, tout fonctionne correctement. Si j'exécute volontairement le test contenant l'appel regexp_matches échouer puis le réparer, j'obtiens une erreur method_missing sur regexp_matches. Si j'exécute à nouveau l'intégralité de la suite de tests, tout va bien. Le plus gros problème vient de Hudson (intégration continue). Il exécute toute la suite de tests mais dit toujours regexp_matches est manquant et je ne sais pas comment le réparer.regexp_matches de Mocha manquant quelques fois

Mon test:

test "if token is set during Account creation the long url should be created correctly" do 
    Account.any_instance.expects(:http_get).with("api.server.com", regexp_matches(%r(^http://.*/accounts/\d+/jobs$))) 
    account = Account.create name: "New Account", token: "NewToken" 
end 

L'erreur:

test_if_token_is_set_during_Account_creation_the_long_url_should_be_created_correctly(AccountTest): 
NoMethodError: undefined method `regexp_matches' for #<AccountTest:0x0000010162d0c0> 
    test/unit/account_test.rb:158:in `block in <class:AccountTest>' 

Je ne sais même pas quel autre code pour ajouter ici que je ne peux pas imaginer ce que la cause est. Pour fou rire j'ai collé require 'mocha' en haut du fichier de test mais cela n'a rien changé.

Répondre

1

je suis tombé sur ce problème sur un projet de rails lors du retrait

require 'spec_helper' 

Je l'ai fait afin que l'exécution de la spécification ne chargerait pas tout l'environnement des rails. Cela signifie que les dépendances externes doivent être requises ou moquées. Mocha doit évidemment être requis.

Mais même après avoir spécifié

require 'mocha' 

Je suis tombé sur la même méthode question manquante.

En fin de compte, je l'ai résolu en incluant le paramètre module matchers directement:

require_relative "../../../lib/some_class" 
require "mocha" 

include Mocha::ParameterMatchers 

describe SomeClass do 
    it "should do things" do 
    ... 
Questions connexes