我想测试一个动作表单控制器,在我的动作中我有类似的东西
def my_action
@user_collection = DB.get("users")
users = @user_collection.find({"name" => "123"})
result_hash = {}
users.each do |user|
# populate result_hash here
end
render :json => result_hash
end
现在我想用一些测试值替换用户哈希/数组并检查json输出,
我试过这种方式(规范)
controller.stub!(:users).and_return(my_users_arr)
get :my_action
response.body.should == {1 => 3}
但是我收到了这个错误: 未定义的方法`stub!'对于'MyController:0x007fde91fd0418'
答案 0 :(得分:-1)
你'错了'错了。从重构控制器代码开始:
def my_action
render :json => users_hash
end
def users_hash
result = {}
# generate users hash
# ...
result
end
然后,在测试方法中尝试这个:
controller.stub!(:users_hash).and_return(my_users_hash)
get :my_action
...