[英]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.