gpt4 book ai didi

ruby-on-rails - 如何链接 allow_any_instance_of 与 Rspec

转载 作者:行者123 更新时间:2023-11-28 20:41:39 24 4
gpt4 key购买 nike

我在学习 rspec stub 的工作原理时遇到了一些麻烦。

我必须测试以下辅助方法,我希望将输出字符串测试为 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] 做 stub 以输出哈希以供 collect 方法处理。

我已经测试过使用

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 可以处理变量吗?

谢谢,

最佳答案

load_fileYAML 的类方法,不是实例方法,所以你可以用 allow(YAML).to receive(:load_file) stub .and_return(hash_link).

关于ruby-on-rails - 如何链接 allow_any_instance_of 与 Rspec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30289950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com