Ruby Cucumber - 页面对象:如何在尝试访问未授权的页面时验证预期的错误页面?

时间:2016-10-29 02:14:32

标签: ruby cucumber pageobjects

在我的测试中,我想验证没有正确访问权限的用户是否应该无法访问某个页面(URL):只有分配了教师角色的用户才能访问以下URL。

   http://learning4fun-xx.com/forteacher/

当没有指定教师角色的用户时,例如学生,但尝试访问上面的URL,此用户将被定向到下面的URL /页面,页面上有未经授权的消息。

   http://learning4fun-xx.com/notauthorized/

如何使用page-object实现这一目标?

我的专题文件:

Scenario: User Role test.
   Given I am logged in as a student.
   When I am trying to visit teacher page.
   Then I am not authorized. 

我应该这样做吗?要验证的是正确的测试? (step_definitions)

  Given(/^I am logged in as a student\.$/) do
    visit(LoginPage).login
  end

  When(/^I am trying to visit teacher page\.$/) do
    visit(TeacherPage)
  end

  Then(/^I am not authorized\.$/) do
    visit(NotAuthorizedPage).should_contain_warning_message 'Not Authorized'
  end

上面的步骤通过,甚至访问(TeacherPage),这让我很困惑。该页面根本不显示,它实际上指示用户/学生访问第二个URL:

  http://learning4fun-xx.com/notauthorized/

如何测试此方案?请分享您的想法。

1 个答案:

答案 0 :(得分:0)

您应该在PageF}的visit_pageon_page代码上take a look。致电visit(SomePage)并不会对页面上的内容进行任何形式的验证;唯一一次对页面元素进行检查的时候是调用PageObject生成的方法之一(例如点击,检查存在等)。

如果您希望某个步骤可能失败,则必须发出某种运行时错误。您可以使用RSpec期望或PageObject的等待方法等。

如果您希望visit_page抛出错误,则必须在名为initialize_page的方法中提供您自己的自定义验证码,以验证(使用,最有可能是wait_until或{ {1}}方法)有问题的页面所呈现的某些元素已经呈现。

顺便说一下,when_present会将浏览器定向到该页面,无论如何,都会导致传递步骤。您需要visit(NotAuthorizedPage),但由于您只是检查文本的存在而不是正确的页面是否已加载,因此您可以从技术上做on(NotAuthorizedPage)

希望有所帮助。