2017-07-20 10 views
0

私の流星アプリケーションのためにいくつかのユニットテスト(mocha/chai)をしたいと思います。私は検証されたメソッドを使用しています(これは関係ありません)。MeteorJS:ユーザのダミーとユニットテストを行う役割

私の方法では、ユーザーにコレクションの更新を実行する管理者権限があるかどうかを確認しています。

ユニットテストで「ダミー」を設定するにはどうすればいいですか?現在、テストは常に403エラースローで失敗します。

ユニットテストのテストモードで

describe('method',() => { 
    it('should update document', (done) => { 
    articleUpdate.call({ _id, value }) 
    } 
}) 

方法

const articleUpdate = new ValidatedMethod({ 
    name: 'article.update', 
    validate: null, 

    run ({ _id, value }) { 
    const loggedInUser = Meteor.user() 
    const isAdmin = Roles.userIsInRole(loggedInUser, ['group'], 'admin') 

    if (!isAdmin) { throw new Meteor.Error(403, 'Access denied') } 

    Articles.update(_id, { 
     $set: { content: value } 
    }) 
    } 
}) 

答えて

0

あなたはコンテキストを渡すために、検証方法を実行するために_executeを使用することができ、hereを参照してください。しかし、ここでの最も簡単な方法はそうのようなRoles.userIsInRoleスタブようだ:

import { sandbox } from 'sinon'; 

const sb = sandbox.create(); 
describe('method',() => { 
    it('should update document',() => { 
    sb.stub(Roles, 'userIsInRole').callsFake(() => true); 
    articleUpdate.call({ _id, value }) 
    } 
}) 
+0

私はエラー 'エラーを取得する実行します。すでにあなたは二回、それをラップしようとしているように思え – user3142695

+0

をwrapped'さuserIsInRoleをラップしようとしました。.. 。 – tomsp

関連する問題