使用 Meteor 进行身份验证测试

Authentication testing with Meteor

我正在编写需要身份验证的流星测试,并且遇到了一系列问题。 这是我的代码:

MochaWeb?.testOnly ->
  describe "Login", ->
    describe "security", ->
    it 'should take you to /login/ if you are not logged in', ->
      Meteor.flush()
      chai.assert.equal Router.current().url, '/login/'

    it 'should allow logins and then take us to /', ->
      Meteor.flush()
      Accounts.createUser username: 'test', password: 'test'
      Meteor.loginWithPassword 'test', 'test', (err) ->
        console.log err
        chai.expect(err).to.be undefined
        chai.assert.equal Router.current().url, '/'
  1. 我的测试通过了,尽管我收到控制台消息,例如传递调用结果时出现异常 'login': TypeError: object is not a function

  2. 我的 console.log 电话给了我

    {错误:403,原因:"User not found",详细信息:未定义,消息:"User not found [403]",错误类型:"Meteor.Error"…}

在控制台上,速度日志上没有任何内容window

  1. 我的用户没有按照我的预期进行身份验证。一个原因可能是我的应用程序没有帐户密码包,因为我不想要它(我只希望 google 应用程序用户能够登录)。但是我想要一种简单的方法来处理流星测试中的身份验证,因为我的大多数测试都涉及经过身份验证的用户。
  2. 我不确定 assert equal 是否有效,或者我必须设置某种超时来等待重定向。在这种情况下,这不是问题,但我是否必须将我拥有的每个测试方法都嵌套在 loginWithPassword 中?我会觉得这有点不舒服。

非常感谢任何帮助和建议!

最佳,

你确定你已经创建了用户吗?我认为您应该在 fixture.js 中创建它。

MochaWeb.testOnly(function() {
    describe("Client", function() {
        describe("firstTest", function() {
            // Meteor.users.remove({});
            before(function(done) {
                Accounts.createUser(currentUser, function(err, success) {
                    Meteor.loginWithPassword(currentUser, function(err) {
                        console.log("This works");
                        // done(); 
                    });
                });
            });
        });
    });
});

这是源文件,我在其中实现了相同的 https://github.com/trinisofttechnologies/mocha-test/blob/master/tests/mocha/client/client.coffee

这是代码所在的仓库 https://github.com/trinisofttechnologies/mocha-test