2017-11-14 14 views
1

私の仕事でコードを継承しました。私はこの機能のためのユニットテストを記述しようとしていますが、私は、この「イベント」を模擬する方法がわからないcoldbox.system.web.context.RequestContextを模擬して初期化する方法は?

public struct function GetData(Event,RC,PRC){}; 

:前の人はこのようになりますいくつかのColdFusionコードを書きました。 これは私のコードです:

mockEvent=createMock(className='coldbox.system.web.context.RequestContext'); 

コールドボックスは、私がそのコードを実行したとき、私はmockEventを初期化する必要があります例外をスローしています。誰かが私が間違っていることを見ていますか?

+0

残念ながら私はあなたの質問に答えることはできませんが、おそらくドキュメンテーションを見て参考になります - [モックオブジェクトの作成](https://testbox.ortusbooks.com/content/mockbox/creating_a_mock_object.html) –

答えて

2

Coldbox.system.testing.BaseTestCaseを拡張したテストでは、Coldbox RequestContextオブジェクトを簡単にモックできます。

this.loadColdbox=trueの変数を設定し、setup()を呼び出すたびにsuper.beforeAll()メソッドを呼び出すと、コンテキストが再構築されます。

その後、RequestContextはメソッドgetRequestContext()で利用可能です。ここでは(私は通常、異なるHTTP動詞に応答するように構成されているモックAPIメソッドにこの方法を使用する)要求getHTTPMethod()機能をあざけるの例です:

function newEventArgs(method = "GET") { 
     //rebuild the context 
     setup(); 
     //mock the context 
     var event = getRequestContext(); 
     prepareMock(event).$("getHTTPMethod", arguments.method); 
     var rc = event.getCollection(); 
     var prc = event.getCollection(private=true); 
     prc.response = getWirebox().getInstance("APIResponse"); 

     return { 
      "event":event, 
      "rc":rc, 
      "prc":prc 
     }; 
} 

次に、あなたがそうのような作成方法をテストがあります

it("Tests Widgets.create", function(){ 

     var testWidget = { 
      "name" : "Test Widget" 
     }; 

     var eventArgs = newEventArgs("POST"); 

     structAppend(eventArgs.rc, testWidget, true); 

     var event = execute( 
      route="/api/v1/widgets" 
      eventArgs=eventArgs 
     ); 

     expect(event.getPrivateValue("response").getStatusCode()).toBe(201, "Event response did not return the proper status code."); 

}); 
+0

ありがとうJclausen、問題は解決される。 –

関連する問題