[英]Dependency Variable Doesnt Exist
冷箱中的新手,所以请耐心等待我。
我正在尝试在我的冷箱应用程序上实现TDD 。
在我的服务模型下,我注入了这种依赖。
property name="wirebox" inject="wirebox"
property name="populator" inject="wirebox:populator";
在我的服务模型上,我有这种方法。 获取所有用户()
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 我有这个代码:
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**
。
希望有人可以帮助我。
您没有显示完整的测试包,但根据名称显示它是一个单元测试(或 ColdBox 模型测试,它是一种单元测试)。 默认情况下,单元测试不启动 ColdBox 框架,也不处理被测 CFC 的注入。 它们是“裸”创建的,您可以为 CFC 拥有的依赖项提供模拟。
因此,在这种情况下,您需要为模型提供一个模拟populator
器以用于测试。 所以是这样的:
var stubPopulator = createStub().$( 'populateFromStruct', {} )
model.$property( 'populator', 'variables', stubPopulator )
var users= model.getAll();
我的存根填充器只返回一个空结构。 还值得注意的是,我认为您的 queryMap() 不会像您认为的那样返回一个结构,因此您可能需要确认该方法的功能。
或者,您可以切换到更多的集成测试,在测试 CFC 的伪构造函数中将this.loadColdBox
设置为 true,然后使用getInstance( 'UserService' )
获取UserService
的完整构建实例,该实例将注入填充器进去。 这究竟会是什么样子取决于您尚未共享的几件事,例如您的测试工具设置,以及您的测试包 CFC 的基类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.