gpt4 book ai didi

ruby-on-rails - 与 Capybara (Rails) 的 TDD; page.should 和 expect(page).to 之间的区别?

转载 作者:数据小太阳 更新时间:2023-10-29 06:58:11 26 4
gpt4 key购买 nike

我是 Rails 和测试驱动开发领域的新手。对于 TDD,我使用的是 RSpec 和 Capybara。目前,我正在编写教程以了解有关 Rails 的更多信息,作者使用以下语法:

page.should have_title('All users')
expect(page).to have_selector('li', text: user.name)

由于两者似乎可以互换,我想知道何时使用哪种语法?因为,对于上述情况,我还可以这样写:

page.should have_title('All users')
page.should have_selector('li', text: user.name)

这基本上是一样的,对吧?

此外,什么时候应该使用“specify”而不是“it”?

it { should have_link('Sign out', href: signout_path) }
specify { expect(user.reload.name).to eq new_name }

在这种情况下,我还可以这样写:

it { should have_link('Sign out', href: signout_path) }
it { expect(user.reload.name).to eq new_name }

我想决定使用哪一个是基于我想表达的内容。也许,你可以帮我解决这个问题?!

谢谢!

最佳答案

page.should have_title('All users')
expect(page).to have_selector('li', text: user.name)

选择后者,它较新,他们正朝着那个方向努力。我不知道他们是否打算弃用前者,但如果他们这样做,您就不必去更新所有代码。

it { should have_link('Sign out', href: signout_path) }
specify { expect(user.reload.name).to eq new_name }

它们是别名,所以只需选择更清楚的别名即可。如果您为测试命名,您将知道何时使用哪个 ( example )。

it { should have_link('Sign out', href: signout_path) }

坦率地说,我避免使用未命名的规范样式。它有点太神奇了,很难推理,而且经常需要杂技设置才能使主题正确运行。此外,我使用 --format documentation 运行我的规范,但自动生成的消息绝不是我想要的。在这种情况下,我想说类似it 'has a signout link'

关于ruby-on-rails - 与 Capybara (Rails) 的 TDD; page.should 和 expect(page).to 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17744383/

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