簡體   English   中英

使用Mocha解析服務器單元測試

[英]Parse server unit test with mocha

因此,我一直在關注一些有關使用Cloud Code進行單元測試的教程。 這是我組織代碼庫的方式:

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文件中,我具有before / after保存和雲代碼功能:

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函數啟動測試。 我得到以下錯誤:

ChatRoom類擴展了Parse.Object {^

ReferenceError:未定義解析

一個快速的解決方法是將其添加到模型文件的開頭,如下所示:const Parse = require('parse / node')

但是Parse已經在/cloud公開了,所以對我來說將這一行復制粘貼到每個文件中似乎很愚蠢。 我該怎么辦 ? 更准確地說:我如何使我的面向對象的結構符合測試?

另外,用零異步測試(用於測試性能)測試我的所有代碼的最佳代碼結構是什么?

您應該在測試套件中將Parse定義為全局

在測試文件夾中創建一個名為helper.js文件,如下所示:

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

這應該自動包含在您的任何測試中。 如果只有一個測試,只需將該行添加到測試文件的頂部。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM