Les tests de plugin échouent avec « undefined method `test_transaction=' »

J’ai créé un plugin l’année dernière et je voulais vérifier qu’il fonctionne toujours sur la dernière version de Discourse. Après avoir réinitialisé mon environnement de développement (j’avais des problèmes de migration de base de données), j’ai pu vérifier manuellement que le plugin fonctionne toujours. Cependant, lorsque j’exécute mes tests de spécification (qui avaient réussi l’année dernière quand je les ai écrits), je rencontre l’erreur suivante :

Failure/Error: DB.test_transaction = ActiveRecord::Base.connection.current_transaction
      
      NoMethodError:
        undefined method `test_transaction=' for #<MiniSqlMultisiteConnection:0x00007fb8b3815c40>

J’avais également installé Discourse Footnote localement, et je rencontre la même erreur lorsque j’exécute ces tests.

Quelqu’un peut-il suggérer comment résoudre mon environnement et/ou mes tests afin qu’ils passent sur la version actuelle de Discourse ?

Quelle commande avez-vous utilisée pour exécuter votre test ?

3 « J'aime »

Assurez-vous d’inclure LOAD_PLUGINS=1 lors de l’exécution de bin/rspec depuis le répertoire source de discourse (avec le dépôt de plugin lié symboliquement depuis le dossier plugins/).

1 « J'aime »

J’exécute la commande suivante depuis le répertoire discourse :

d/rake plugin:spec['discourse-ruby']

@riking Je n’inclus pas explicitement LOAD_PLUGINS=1, mais cela semble se produire de toute façon (je suppose que c’est parce que j’utilise plugin:spec). La première ligne après l’exécution de la commande est :

LOAD_PLUGINS=1 /usr/local/bin/ruby -S rspec ./plugins/discourse-ruby/spec/markdown_ruby_spec.rb --profile

Si je l’inclus explicitement comme dans l’exemple ci-dessous, j’obtiens la même erreur :

d/rake plugin:spec['discourse-ruby'] LOAD_PLUGINS=1

Il semble que le script d/rake utilise par défaut l’environnement development, vous devrez donc exécuter la commande suivante à la place : RAILS_ENV=test d/rake plugin:spec['discourse-ruby']

3 « J'aime »

Cela a fonctionné, merci !

2 « J'aime »