使用SitePrism在 Ruby、Capybara 中创建测试。我遇到过这样的情况,我有一个站点,但站点的内容取决于用户拥有的权限。例如,菜单中的元素“admin”仅对管理员可见等一个主要区别是管理员有自己的子域,如 admin.example.com(普通用户的站点是 example.com)。
我必须从管理员和用户的角度对其进行测试,并且我想避免创建两个几乎相同的页面对象。
有没有解决这个问题的正确方法?
使用SitePrism在 Ruby、Capybara 中创建测试。我遇到过这样的情况,我有一个站点,但站点的内容取决于用户拥有的权限。例如,菜单中的元素“admin”仅对管理员可见等一个主要区别是管理员有自己的子域,如 admin.example.com(普通用户的站点是 example.com)。
我必须从管理员和用户的角度对其进行测试,并且我想避免创建两个几乎相同的页面对象。
有没有解决这个问题的正确方法?
因此,这里有多种工具可供您使用。
#all_there?
将检查是否所有声明的元素都在页面上。此外,这可以通过使用 DSL 语句来限制,例如.expected_elements
我建议你回到过去 6-9 个月内有很多新信息的 README 并检查它。
在范围方面,因此存在用户和管理员的概念,这也很容易使用 ENV 哈希中的变量进行分区并相应地设置 url。在 SitePrism docs/Github 上再次有关于此的文档。
如果您觉得这仍然不起作用或存在问题,请在此处打开问题请求:https ://github.com/natritmeyer/site_prism/issues
class ExamplePage < SitePrism::Page
...
element :test_element, '#test_element'
...
end
...
let!(:example_page) { ExamplePage.new }
context 'situation 1' do
it 'displays test_element' do
...
expect(example_page).to have_test_element
end
end
context 'situation 2' do
it 'displays test_element' do
...
expect(example_page).to_not have_test_element
end
end