首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >依赖变量不存在

依赖变量不存在
EN

Stack Overflow用户
提问于 2022-07-11 09:55:54
回答 1查看 122关注 0票数 1

新手在冷柜里,所以请对我有耐心。

我正试图在我的冷盒应用程序上实现TDD

在我的服务模型下,我注入了这个依赖项。

property name="wirebox" inject="wirebox" property name="populator" inject="wirebox:populator";

在我的服务模型中,我有这样的方法。GetallUsers()

代码语言:javascript
复制
User function new(){
    return wirebox.getInstance("User");
}

function getAllUsers(){
    var users= queryExecute(
        "SELECT * FROM USERS",
        {},
        {returnType="array"}
    ).map(function(user){
        return populator.populateFromStruct(new(),user);
    });
    return users;
}

在我的UserServiceTest上,我有这样的代码:

代码语言:javascript
复制
component extends="coldbox.system.testing.BaseModelTest" model="models.UserService"{





/*********************************** LIFE CYCLE Methods ***********************************/
    
    
    function beforeAll(){
        super.beforeAll();
        // setup the model
        super.setup();
        

        
        // init the model object
        model.init();
    }

    function afterAll(){
        super.afterAll();
    }

    /*********************************** BDD SUITES ***********************************/

    function run(){

        describe( "Users Suite", function(){

            it( "can get list of users", function(){
                

                var stubPopulator = stub().$( 'populateFromStruct', {} );
                model.$property( 'populator', 'variables', stubPopulator );
                var users= model.getAll();

                expect( event.getPrivateValue( "users") ).toBeStruct();
            
            });
        });
    }

但我说**variable [POPULATOR] doesn't exist**时出错了。

希望有人能帮我。

EN

回答 1

Stack Overflow用户

发布于 2022-07-12 22:39:26

您没有显示完整的测试包,但是根据它的名称,它是一个单元测试(或者一个ColdBox模型测试,它是一种单元测试)。单元测试在默认情况下不会拆分ColdBox框架,也不会处理被测试的CFC的注入。它们是“裸”创建的,这取决于您为CFC所具有的依赖关系提供模拟。

因此,在这种情况下,您需要为模型提供一个模拟populator,以便用于测试。所以就像这样:

代码语言:javascript
复制
var stubPopulator = createStub().$( 'populateFromStruct', {} )
model.$property( 'populator', 'variables', stubPopulator )
var users= model.getAll();

我的填充器只返回一个空的结构。还值得注意的是,我不认为您的queryMap()返回的结构像您认为的那样,因此您可能需要确认该方法的功能。

或者,您可以切换到更多的集成测试,在测试CFC的pseduo构造函数中将this.loadColdBox设置为true,然后使用getInstance( 'UserService' )来获得完整构建的UserService实例,该实例将被注入到其中。具体情况取决于您尚未共享的几件事情,例如您的测试工具设置和您的测试包CFC的基类。

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

https://stackoverflow.com/questions/72936709

复制
相关文章

相似问题

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