2017-03-01 3 views
0

私は、クラウドコードによる単体テストについてのチュートリアルに従ってきました。ここで私は私のコードベースを整理する方法である:私のmodel.jsファイルでmochaを使用したサーバユニットテストの解析

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

、私はヘルパー関数でParse.Objectサブクラスを持っています。

私はテスト目的のためにbeforeSave機能の内容を抽出しました
function beforeSave(request, response) { 
    // Do stuff 
} 

Parse.Cloud.beforeSave('ChatMessage', function (request, response) { 
    beforeSave(request, response) 
}) 

module.exports = { 
    beforeSave: beforeSave, 
} 

:それは私のupdate.jsファイルには、この

class ChatMessage extends Parse.Object { 
    constructor() { 
     super('ChatMessage') 
    } 

    // Some functions 
} 

Parse.Object.registerSubclass('ChatMessage', ChatMessage) 

module.exports = ChatMessage 

のように、私は前/後に保存し、クラウドコード機能を持って見えます。それは私にモアの前に保存機能を公開することができます。記録のために、すべてこれは生産で正常に動作します。

は今、私のテストでは、私はこれを行う:

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関数を使ってテストを開始しようとします。そして、私は次のエラーを取得する:解析は=必要 CONST(「/ノードを解析」)

しかし、解析は以下のとおりです。

class ChatRoom extends Parse.Object { ^

ReferenceError: Parse is not defined

クイックフィックスは、このように私のモデルファイルの先頭にこれを追加することですすでに/cloudに公開されていますので、私はこのファイルをすべてのファイルに貼り付けてコピーするのは馬鹿に思えます。私は何をすべきか ?より正確には、オブジェクト指向の構造をテストにどのように適合させるのですか?

また、(テストパフォーマンスのための)非同期テストをゼロにしてすべてのコードをテストするのに最適なコード構造は何でしょうか?

答えて

0

あなたはこのようになりますhelper.jsと呼ばれるテストフォルダ内のファイルを作成するには、グローバル

+0

どうすればよいですか?いくつかのコードを提供できますか?ありがとう! –

+0

のようにglobal.Parse = require( 'parse/node');あなたの仕様のどこにでも? – flovilmart

+0

私のコードでこれを追加しようとしましたが、問題を解決しませんでした –

0

として、あなたのテストスイートで解析を定義する必要があります。これは自動的にあなたのテストのいずれかに含まれるはずです

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

を。テストが1つしかない場合は、その行をテストファイルの先頭に追加してください。

関連する問題