如何模拟 coldbox.system.web.context.RequestContext 并初始化它?
How to mock a coldbox.system.web.context.RequestContext and initialize it?
我在工作中继承了一些代码。以前的人写了一些 ColdFusion 代码,如下所示:
public struct function GetData(Event,RC,PRC){};
我正在尝试为此函数编写单元测试,但我不知道如何模拟此 "Event"。
这是我的代码:
mockEvent=createMock(className='coldbox.system.web.context.RequestContext');
ColdBox 抛出一个异常,当我 运行 该代码时,我必须初始化 mockEvent
。有人看到我做错了什么吗?
在扩展 Coldbox.system.testing.BaseTestCase
的测试中,您可以轻松模拟 Coldbox RequestContext 对象。
您需要在测试中设置以下变量:this.loadColdbox=true
然后,在您从测试中调用 super.beforeAll()
方法后,每次调用 setup()
时,上下文被重建。
之后,RequestContext 可通过方法 getRequestContext()
使用。这是模拟请求 getHTTPMethod()
函数的示例(我通常使用此方法模拟配置为响应不同 HTTP 动词的 API 方法):
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." );
});
我在工作中继承了一些代码。以前的人写了一些 ColdFusion 代码,如下所示:
public struct function GetData(Event,RC,PRC){};
我正在尝试为此函数编写单元测试,但我不知道如何模拟此 "Event"。 这是我的代码:
mockEvent=createMock(className='coldbox.system.web.context.RequestContext');
ColdBox 抛出一个异常,当我 运行 该代码时,我必须初始化 mockEvent
。有人看到我做错了什么吗?
在扩展 Coldbox.system.testing.BaseTestCase
的测试中,您可以轻松模拟 Coldbox RequestContext 对象。
您需要在测试中设置以下变量:this.loadColdbox=true
然后,在您从测试中调用 super.beforeAll()
方法后,每次调用 setup()
时,上下文被重建。
之后,RequestContext 可通过方法 getRequestContext()
使用。这是模拟请求 getHTTPMethod()
函数的示例(我通常使用此方法模拟配置为响应不同 HTTP 动词的 API 方法):
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." );
});