【发布时间】:2023-03-17 11:04:02
【问题描述】:
我在学习 rspec 存根如何工作时遇到了一些麻烦。
我必须测试以下我希望将输出字符串测试为 html 的辅助方法:
def build_links(resource)
YAML.load_file("config/admin_links.yml")[resource].collect do |link|
active = (eval(link.last) == request.path) ? "active" : ""
path = link.last.empty? ? "#" : eval(link.last)
content_tag(:li, link_to(link.first, path), class: active)
end.join.html_safe
我想测试该方法是否以正确的方式构建链接。我不知道如何为 YAML.load_file("config/admin_links.yml")[resource] 做存根,以输出一个哈希,以便收集方法工作。
我已经使用
进行了测试hash_link = {"Dashboard"=>"admin_dashboard_path", "Configurações"=>""}
allow_any_instance_of(YAML).to receive(:load_file).with(["test"]).and_return(hash_link)
u = YAML
allow(u).to receive_message_chain(:load_file, :[] ,:collect)
但到目前为止还没有成功。我应该如何进行模拟,所以 "YAML.load_file("config/admin_links.yml")[resource]" 返回 "{"Dashboard"=>"admin_dashboard_path", "Configurações"=>""" 所以方法collect 可以对变量起作用吗?
tnx,
【问题讨论】:
标签: ruby-on-rails ruby testing rspec mocking