3

速度 [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() を使用して現在のデータを表示しようとしましたが、ブラウザ コンソールには表示されません。なんで?

[1] https://atmospherejs.com/velocity/html-reporter

[2] https://atmospherejs.com/sanjo/jasmine

4

0 に答える 0