速度 [1] とジャスミン [2] を使用して、流星アプリケーションにテストを実装しようとしています。「オブジェクト」(collections/object.js) というコレクションを定義しました。
Objects = new Meteor.Collection('objects');
セットアップ機能を実装しました (tests/jasmine/server/unit/ObjectSpec.js):
describe('Objects', function () {
'use strict';
// set up
beforeEach(function () {
// 1 - backup all data
MeteorStubs.install();
// 2 - delete current 'Objects'-items
Objects.remove({});
// 3 - add test data
Objects.insert({
someProperty: 'data1'
});
});
次に、実際のテストを実行します (同じファイル):
// actual tests
it("should delete a specific object", function () {
var selector = {someProperty: 'data1'};
var selectedObject = Objects.findOne(selector);
// will return 'Expected undefined not to be undefined.'
expect(selectedObject).not.toBe(undefined);
Meteor.call('deleteObject', selectedObject, function(error, id) {
if (error)
return alert(error.reason);
});
expect(Objects.findOne(selector)).toBe(undefined);
});
その後、ティアダウンで古いアプリケーションの状態を復元します (同じファイル):
// tear down
afterEach(function () {
Objects.remove({});
MeteorStubs.uninstall();
});
今、テストを実行すると、速度がスローされます:未定義ではないことが期待されます。
「beforeEach」関数のデータが実際に挿入され、実際のテスト関数にアクセスできるようになるのだろうか? また、テスト関数で console.log() を使用して現在のデータを表示しようとしましたが、ブラウザ コンソールには表示されません。なんで?