首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何模拟和初始化coldbox.system.web.context.RequestContext?

如何模拟和初始化coldbox.system.web.context.RequestContext?
EN

Stack Overflow用户
提问于 2017-11-14 10:14:34
回答 1查看 196关注 0票数 1

我在工作中继承了一些代码。前面的人写了一些ColdFusion代码,如下所示:

代码语言:javascript
复制
public struct function GetData(Event,RC,PRC){};

我试图为这个函数编写一个单元测试,但我不知道如何模拟这个“事件”。这是我的密码:

代码语言:javascript
复制
mockEvent=createMock(className='coldbox.system.web.context.RequestContext');

ColdBox抛出了一个异常,运行该代码时必须初始化mockEvent。有人看到我做错什么了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-14 18:12:11

在扩展Coldbox.system.testing.BaseTestCase的测试中,您可以轻松地模拟Coldbox RequestContext对象。

您需要在测试中设置以下变量:this.loadColdbox=true,然后,在您从测试中调用super.beforeAll()方法之后,每次调用setup()时,都会重建上下文。

在此之后,RequestContext可以使用getRequestContext()方法。下面是一个模拟请求getHTTPMethod()函数的示例(我通常使用此方法来模拟配置为响应不同HTTP谓词的API方法):

代码语言:javascript
复制
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
        };
}

然后,您可以测试如下所示的创建方法:

代码语言:javascript
复制
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." );

});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47283031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档