gpt4 book ai didi

ruby-on-rails - Rspec link_to - 包括确认/数据确认属性导致测试失败

转载 作者:行者123 更新时间:2023-12-04 06:25:20 26 4
gpt4 key购买 nike

我有一个正在尝试测试的链接(请忽略方括号):

[%= link_to "Delete User", destroy_user_account_path(@profile.user), :class => "delete", :confirm => "a", :title => "Delete #{@profile.user.name}", :method => :delete %]

下面的测试失败了,但如果我注释掉 :confirm => "a"行,它通过了:

  it "should have a link to delete the user's account (using the destroy_user_account action in the registrations controller)" do
get :show, :id => @profile
response.should have_selector("a",
:href => destroy_user_account_path(@profile.user),
:confirm => "a",
:title => "Delete #{@profile.user.name}",
:class => "delete",
:content => "Delete User")
end

看看我的失败:(

 Failure/Error: response.should have_selector("a",
expected following output to contain a <a title='Delete Michael Hartl' class='delete' href='/destroy-user-account/159' confirm='a'>Delete User</a> tag:

此行的实际 html 输出如下(同样,方括号是我的)。我注意到它在此处作为属性输出“数据确认”,而不是测试预期的“确认”属性。

[a href="/destroy-user-account/159" class="delete" data-confirm="a" data-method="delete" rel="nofollow" title="Delete Michael Hartl"]Delete User[/a]

谁能解释一下在这种情况下 confirm 和 data-confirm 之间的区别,并帮助我弄清楚为什么会出现此错误/如何解决?

谢谢!

最佳答案

“确认”不是 HTML 属性。 data-whatever标记是一项 HTML5 功能,允许您在元素上放置任何您想要的自定义属性,主要用于在客户端将信息传入和传出 Javascript。

所以:<a confirm="foo"></a>不是有效的 HTML,但是 <a data-confirm="foo"></a>是。

Rails UJS 寻找 data-confirm标签,并且知道在您单击它们时向您提示一条确认消息。它从 data-confirm 获取确认消息值(value)。

因此,在这种情况下,您的代码应为:

response.should have_selector("a",
:href => destroy_user_account_path(@profile.user),
'data-confirm' => "a",
:title => "Delete #{@profile.user.name}",
:class => "delete",
:content => "Delete User")

这应该可以解决您的问题,如果没有,请告诉我。

关于ruby-on-rails - Rspec link_to - 包括确认/数据确认属性导致测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10250653/

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