0

クライアントからの許可ルールと拒否ルールを更新しました。クライアント側では、挿入、更新、または削除は機能しません。以前は、クライアントがコレクションに挿入できるかどうかを確認するためにテストされていたため、このテスト (以下にリストされています) は成功していました。これをテストに切り替えて、クライアントがコレクションに挿入できない場合にのみテストが合格するようにします。

これはどのように行われますか?

//tests/tests.js
var assert = require('assert');

suite('Donate', function() {
  test('in the server', function(done, server) {
    server.eval(function() {
      Donate.insert({fname: 'George'});
      var docs = Donate.find().fetch();
      emit('docs', docs);
    });

    server.once('docs', function(docs) {
      assert.equal(docs.length, 1);
      done();
    });
  });
});

  test('using both client and the server', function(done, server, client) {
    server.eval(function() {
      Donate.find().observe({
        added: addedNewDonate
      });

      function addedNewDonate(donate) {
        emit('donate', donate);
      }
    }).once('donate', function(donate) {
      assert.equal(donate.fname, 'George');
      done();
    });

    client.eval(function() {
      Donate.insert({fname: 'George'});
    });
  });
4

1 に答える 1

0

これについて間違った方法で行っている可能性があります。挿入が期待どおりに拒否されるかどうかを確認するためのテストは、既にテスト済みの Meteor コアを実際にテストすることです。別の言い方をすれば、insert deny プロパティに対して false を返すメソッドをテストする必要があります。あなたがしているすべての場合:

    Donate.deny({
      insert: function(){
        return false;
      }
    )};

Meteor コアは十分にテストされているため、これが機能することを確認できるため、これをテストする必要はありません。

一方、次のようなものがある場合

    function complexDenyFunction(){
      //perform complex actions 
      //if all complex conditions are satisfied 
      //return true
      //else return false
      return result;
    }

    Donate.deny({
      insert: complexDenyFunction
    });

次に、必要なシナリオを作成し、期待される結果がcomplexDenyFunction返されるかどうかを確認しtrueますfalsecomplexDenyFunction

于 2014-08-19T09:27:44.373 に答える