私のメソッドのユニットテストを書いています。 これらのメソッドをテストするにはどうすればよいですか?流星での認証が必要なメソッド/パブリケーションのユニットテスト
これまで、practicalmeteor:mocha
というテストを書いて、新しいユーザーを作成し、そのユーザーとログインしました。
describe('login method', function() {
let logingKey;
beforeEach(function() {
Meteor.users.remove({});
const createUser = Meteor.server.method_handlers['registerUser'];
let params = {
username: 'testUsername'
}
res = createUser.apply({}, [params]);
logingKey = res.key;
});
it('can provide authentication', function() {
const loginUser = Meteor.server.method_handlers['login'];
let params = {
key: logingKey
}
console.log(params);
loginUser.apply({}, [params]);
});
私はアプリケーションで正常に動作生成されたキーにログインするカスタムログインハンドラを書いたが、テスト結果に、私は次のエラーを取得しています。
Error: Cannot read property 'id' of undefined
at AccountsServer.Ap._setLoginToken (packages/accounts-base/accounts_server.js:889:35)
at packages/accounts-base/accounts_server.js:288:10
at Object.Meteor._noYieldsAllowed (packages/meteor.js:671:12)
at AccountsServer.Ap._loginUser (packages/accounts-base/accounts_server.js:287:10)
at AccountsServer.Ap._attemptLogin (packages/accounts-base/accounts_server.js:349:12)
at Object.methods.login (packages/accounts-base/accounts_server.js:533:21)
at Object.methodMap.(anonymous function) (packages/meteorhacks_kadira.js:2731:30)
at Test.<anonymous> (imports/api/methods/loginUser.tests.js:30:17)
at run (packages/practicalmeteor:mocha-core/server.js:34:29)
at Context.wrappedFunction (packages/practicalmeteor:mocha-core/server.js:63:33)
ここで間違っていますか?任意の提案は、事前に感謝の歓迎です。
UPDATE
OK!ここで私の苦悩です、私はこのメソッドの単体テストを書いたと言う、私はどのように確認するか、ここでuserIdを取得する必要があります。 (あなたは空のオブジェクトを提供しながら、Method Invocation objectする必要があります)
Meteor.methods({
userStatus:function(update){
check(update, {online: String})
if (! this.userId) {
throw new Meteor.Error('error-not-authorized','User need to login', {method: "userStatus"})
}
try {
Meteor.users.update(Meteor.userId(),{$set: {'status.online': !!parseInt(update.online)}})
} catch (e) {
console.error("Error",e);
}
}
});
あなたは、ログインしたユーザーが必要なメソッドでユニットテストを実行できません。 –
つまり、呼び出しオブジェクトなしで呼び出しオブジェクトに依存するメソッドハンドラを呼び出すことはできません。いずれかを模倣(接続を含む)または実証されているように一時的な接続を使用してください。 – MasterAM
質問を更新しました。この場合ユニットテストを書くべきですか? '私の問題は –