這裏有類似於我們使用的一個例子:
var resetCollection = function(name) {
var Collection = this[name];
if (Collection)
// if the collection is already defined, remove its documents
Collection.remove({});
else
// define a new unmanaged collection
this[name] = new Mongo.Collection(null);
};
reset = function() {
var collections = ['Comments', 'Posts'];
// reset all of the collections
_.each(collections(function(name) {resetCollection(name);}));
// insert some documents
var postId = Posts.insert({title: 'example post'});
Comments.insert({postId: postId, message: 'example comment'});
};
Tinytest.add('something', function(test) {
reset();
var post = Posts.findOne();
var comment = Comments.findOne();
return test.equal(comment.postId, post._id);
});
在每次測試開始時我們稱之爲reset
其清理數據庫,並創建必要的集合。
我該如何告訴Meteor針對測試數據庫而不是我的真實測試數據庫運行?
當您測試軟件包時,將爲您創建單獨的數據庫。沒有必要手動指定你的數據庫路徑。
使用數據輕鬆填充測試數據庫的最佳方法是什麼?
上面的例子應該給你一些指示。我發現避免軟件包間衝突的最好方法是在測試中使用非託管集合(名稱= null
)。 resetCollection
函數應該正確避免重新定義由其他包導出的任何託管集合。有關更多詳細信息,請參閱this question。
這看起來不錯。這對於自動分離數據庫也很棒。我在文檔中沒有看到任何有關這方面的信息。謝謝。 – samanime
但這並不適用於客戶端。我收到一個錯誤,說我只能通過ID刪除。 –