2016-12-28 67 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个字符串参数的处理程序。