所以我一直在關注一些關於使用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
文件,我有前/保存和雲代碼後發揮作用:
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函數啓動測試。我得到以下錯誤:
class ChatRoom extends Parse.Object { ^
ReferenceError: Parse is not defined
一個快速的解決辦法是在我的模型文件的開頭是這樣補充一點: 常量解析=需要(「解析/節點」)
但分析是已經在/cloud
中曝光,所以我覺得在每個文件中複製粘貼這一行似乎很愚蠢。我該怎麼辦 ?更確切地說:我如何讓面向對象的結構符合測試?
此外,什麼是最好的代碼結構來測試我所有的代碼與零異步測試(測試性能)?
如何?你能提供一些代碼嗎?謝謝 ! –
like global.Parse = require('parse/node');你的規格在任何地方? – flovilmart
我試圖在我的代碼中添加這個,但它沒有解決問題 –