2016-12-28 72 views
0

嗨,大家好,我正在嘗試爲我的流星方法寫一個測試。所以我在服務器文件夾錯誤:匹配錯誤:預期的對象,在測試中得到字符串

import { Meteor } from 'meteor/meteor' 

Meteor.methods({ 
    'createUser': function (email, password) { 
    var userObject = { 
     email, 
     password 
    } 

    Accounts.createUser(userObject) 
    } 
}) 

創建的文件accountsMethods.js而accountsMethods.tests.js

import { Meteor } from 'meteor/meteor' 
import { resetDatabase } from 'meteor/xolvio:cleaner' 
import { Random } from 'meteor/random' 
import should from 'should' 

describe('accountsMethods', function() { 
    beforeEach(function() { 
    resetDatabase() 
    }) 

    it('Creates User', function() { 
    const createUser = Meteor.server.method_handlers['createUser'] 
    const email = '[email protected]' 
    const password = '12345' 
    const userId = Random.id() 
    createUser.apply({ userId }, [email, password]) 
    should(Meteor.users.find({}).count()).be.exactly(1) 
    }) 
}) 

在我有以下錯誤的測試,但我不知道這是怎麼回事。

Error: Match error: Expected object, got string 
    at exports.check (packages/check.js:57:15) 
    at packages/accounts-password/password_server.js:1033:7 
    at tryLoginMethod (packages/accounts-base/accounts_server.js:248:14) 
    at AccountsServer.Ap._loginMethod (packages/accounts-base/accounts_server.js:381:5) 
    at Object.createUser (packages/accounts-password/password_server.js:1026:19) 
    at Test.<anonymous> (server/accountsMethods.tests.js:15:16) 
    at run (packages/practicalmeteor:mocha-core/server.js:34:29) 
    at Context.wrappedFunction (packages/practicalmeteor:mocha-core/server.js:63:33) 

// 11 
    var createUser = Meteor.server.method_handlers['createUser']; // 12 
    var email = '[email protected]';         // 13 
    var password = '12345';           // 14 
    var userId = Random.id();          // 15 
    createUser.apply({ userId: userId }, [email, password]);   // 16 
    should(Meteor.users.find({}).count()).be.exactly(1);    // 17 

回答

0

由於方法expects an object(儘管檢查在回調中執行)並且您提供了2個字符串。

這是不是調用第三方方法的推薦方式。請參閱this answer以獲取更適合的方式。

如果硬要直接調用方法處理程序,使用

createUser.apply({ userId }, [{email, password}]);   

代替,它調用與單個對象的參數,而不是2個字符串參數的處理程序。