0

私はJavaScriptのテストがまったく初めてで、データベースに触れるテスト方法にアプローチする方法を把握しようとしています

たとえば、データベースにクエリに一致するドキュメントがある場合に true を返すこのメソッドがあります

Payments = new Mongo.Collection('payments');

_.extend(Payments, {
  hasAnyPayments: function(userId) {
    var payments = Payments.find({ userId: userId });
    return payments.count() > 0;
  }
});

今のところ正しいと思う構造しか書いてないけどかなり迷ってる

describe('Payments', function() {
  describe('#hasAnyPayments', function() {
    it('should return true when user has any payments', function() {

    });

  });
});

そのようなテストはデータベースに触れることさえ想定されていますか? どんなアドバイスでも大歓迎です

4

1 に答える 1

4

Mongo に手動で (または Meteor の外部で) データを手動で入力しない限り、データベースをテストする必要はありません。

テストする必要があるのは、コード内の実行パスです。

したがって、上記の場合、hasAnyPaymentsはすべてのユーザーの支払いを検索し、0 を超える場合に true を返すユニットです。したがって、テストは次のようになります。

describe('Payments', function() {
  describe('#hasAnyPayments', function() {
    it('should return true when user has any payments', function() {

        // SETUP
        Payments.find = function() { return 1; } // stub to return a positive value

        // EXECUTE
        var actualValue = Payments.hasAnyPayments(); // you don't really care about the suer

        // VERIFY
        expect(actualValue).toBe(true);
    });

  });
});
于 2015-02-26T08:03:40.267 に答える