用摩卡咖啡解析服务器单元测试



,所以我一直在遵循一些有关使用云代码的单元测试的教程。这是我组织代码库的方式:

cloud/
  ChatMessage/
    model.js
    update.js
  ChatRoom/
    model.js
    update.js
test/
  test.js

在我的 model.js文件中,我有parse.Object子类带有辅助功能。看起来像这个

class ChatMessage extends Parse.Object {
    constructor() {
        super('ChatMessage')
    }
    // Some functions
}
Parse.Object.registerSubclass('ChatMessage', ChatMessage)
module.exports = ChatMessage

在我的 update.js文件中,我有保存之前/之后的保存和云代码功能:

function beforeSave(request, response) {
    // Do stuff
}
Parse.Cloud.beforeSave('ChatMessage', function (request, response) {
    beforeSave(request, response)
})
module.exports = {
    beforeSave: beforeSave,
}

我为测试目的提取了beforesave功能的内容。它使我能够将保存功能公开为摩卡咖啡。为了记录,所有这些在生产中都很好。

现在在我的测试中,我这样做:

const ChatMessage = require('../cloud/ChatMessage/model.js')
const ChatMessageUpdate = require('../cloud/ChatMessage/update.js')
const expect = require('expect')
describe('ChatMessage', function () {
    const request = {
        user: new Parse.User(),
        object: new ChatMessage()
    }
    const response = {
        success: function () {},
        error: function () {}
    }
    describe('creation', function () {
        it('should fail when the author is undefined', function () {
            ChatMessageUpdate.beforeSave(request, response)
            expect(response.error).toHaveBeenCalled()
        })
    })
})

我模拟请求和响应对象。然后,我尝试使用我的beforesave函数启动测试。我会收到以下错误:

课堂聊天室扩展了parse.object { ^

参考文献:未定义解析

快速修复是在我的模型文件的开头添加此信息:const parse = require('parse/node')

,但是解析已经在/cloud中暴露了,因此在每个文件中复制粘贴对我来说似乎很愚蠢。我应该怎么办 ?更准确地说:如何使面向对象的结构符合测试?

另外,用零异步测试(用于测试性能)测试我所有代码的最佳代码结构是什么?

您应该将测试套件中的解析定义为全局

在您的测试文件夹中创建一个名为 helper.js的文件,该文件看起来像这样:

// helper.js
global.Parse = require('parse/node');

这应该自动包含在您的任何测试中。如果您只有一个测试,只需将该行添加到测试文件的顶部。

最新更新