comment puis-je utiliser TDD avec MongoDB comme ma seconde base de données?TDD: Rspec Ruby MongoDB/Ruby Mongo pilote
Merci
Edit:
Utilisation Rspec ou toute autre chose qui me permet de le tester.
comment puis-je utiliser TDD avec MongoDB comme ma seconde base de données?TDD: Rspec Ruby MongoDB/Ruby Mongo pilote
Merci
Edit:
Utilisation Rspec ou toute autre chose qui me permet de le tester.
[Mise à jour] Avec MongoMapper mis en place, vous pouvez facilement utiliser la connexion MongoDB directement
mongodb = MongoMapper.database
collection = mongodb.collection("my_collection")
collection.find.first
=> {"_id"=>BSON::ObjectId('4e43dfc75d1e1e0001000001'), "key1"=>"val1" }
cette autre SO Q/A est encore plus direct, en utilisant les fonctions javascript comme MongoMapper.database.eval(Mongo::Code.new('function(){ return 11 + 6; })
[/ mise à jour]
J'ai une telle architecture polyglotte, certains modèles avec postgresql, d'autres comme mongo docu ments. Je ne suis pas vraiment sûr de ce que vous demandez, alors je vais directement entrer et afficher la plupart de ma configuration ici. Il comprend mes hacks, vous trouverez probablement plus belle config ailleurs.
Je mis la configuration dans un point essentiel https://gist.github.com/957341
OK, voici donc un document avec le document intégré, puis la spécification. J'ai écrit les spécifications une par une, elles sont donc testées.
class MyDocument
include MongoMapper::Document
key :title, String
key :published_at, Time, :index => true
key :collaborators, Array
many :my_embedded_documents
end
class MyEmbeddedDocument
include MongoMapper::EmbeddedDocument
key :title, String
key :author, String
embedded_in :my_document
end
la spécification
require "spec_helper"
describe MyDocument do
before do
@md = MyDocument.create(:title => "Example", :collaborators => ["mongomapper", "rspec", "oma"])
end
it "should have title" do
found = MyDocument.find(@md.id)
found.title.should == "Example"
end
it "should have two my_documents" do
MyDocument.create
MyDocument.count.should == 2
end
it "should be able to fetch embedded documents" do
@md.my_embedded_documents << MyEmbeddedDocument.new(:title => "The King", :name => "Elvis Presley")
@md.my_embedded_documents.build(:title => "Embedded example", :name => "Embeddo")
@md.save!
MyDocument.where(:title => "Example").first.should == @md #findMyEmbeddedDocument.count.should == 2
end
end
spec_helper.rb
RSpec.configure do |config|
#...
config.after(:each) do
MongoMapper.database.collections.each(&:remove)
end
end
Je ne sais pas ce que vous vouliez des réponses, mais j'espère que cela sera utile à quelqu'un.
De ce que je comprends, il ne semble pas que votre application colle aux rails paradigme MVC avec l'utilisation de cette base de données secondaire qui ne semble pas de données de modèle de magasin.
Je vous recommande de prendre les parties auxiliaires de l'application qui dépendent de mongo et de les coller dans une bibliothèque. Vous pouvez en faire un petit bijou s'il est logique de l'utiliser ailleurs. Ensuite, créez un testsuite pour la logique de la bibliothèque à l'aide des outils de test standard, et à intégrer dans votre application soit avec un simple besoin ou certaines directives (en fonction de ce qu'il meurt et comment vous avez l'intention de l'utiliser).
Êtes-vous juste en utilisant le pilote MongoDB nu, ou avez-vous un ORM comme MongoMapper, MongoId, etc? En outre, utilisez-vous MongoDB comme couche de persistance pour vos modèles, pour la mise en cache, les fichiers via GridFS, etc? Quelques informations supplémentaires seraient utiles. – michaeltomer
Seul le mappeur ruby mongo et non pas comme base de données principale. Pas de cache, rien. Cependant, il représente une grande partie des applications qui sauve des tonnes de données persistantes. – donald
Vous parlez d'une architecture ployglot droite? certains modèles avec activerecord, d'autres comme documents mongo? Je peux montrer comment je le fais avec mongomapper, intéressé? – oma