Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 页面对象-将执行某项操作的方法与报告其是否';结束了_Ruby_Design Patterns_Page Object Gem - Fatal编程技术网

Ruby 页面对象-将执行某项操作的方法与报告其是否';结束了

Ruby 页面对象-将执行某项操作的方法与报告其是否';结束了,ruby,design-patterns,page-object-gem,Ruby,Design Patterns,Page Object Gem,我有一个页面对象类,其中包含一系列方法,用于执行特定的操作。有一种方法,我们称之为log_in_with,其作用如下: def log_in_with(user, pass) # does some stuff here end 但是,这个特定的方法不会返回任何内容。因此,为了让我知道用户是否已成功登录,我需要: a) 将此功能嵌入到现有方法中,然后。将其重命名为log_in_并成功?或者使用单独的方法def login_successful?(user,pass)调用log_in_并报告

我有一个页面对象类,其中包含一系列方法,用于执行特定的操作。有一种方法,我们称之为log_in_with,其作用如下:

def log_in_with(user, pass)
  # does some stuff here
end
但是,这个特定的方法不会返回任何内容。因此,为了让我知道用户是否已成功登录,我需要:

a) 将此功能嵌入到现有方法中,然后。将其重命名为log_in_并成功?或者使用单独的方法def login_successful?(user,pass)调用log_in_并报告登录是否成功。然而,如果我调用login_successful,则不清楚引擎盖后面到底发生了什么?从另一个类来看,不清楚这个方法是否既在登录,也在报告是否成功


我遇到了这样一种方法,它可以做一些事情,而不是报告是否成功完成的方法。解决类似问题的设计模式/最佳实践不是吗

我相信用一种方法明确地做一件事是一种好的做法。因此,请使用
登录(用户、密码)
登录成功?
,但不要从后者调用前者。在测试本身中显示这两个调用可以让我轻松地遵循测试的逻辑并破译任何失败消息,而单个
login\u successful?
调用会让我感到困惑,并迫使我深入研究类代码

describe "logging in" do
  page.log_in_with('username', 'password')
  expect(page.login_successful?).to be_true
end

为什么这个方法不返回任何内容?最佳实践是,如果登录成功,则返回用户,否则返回零。或者事件更好:成功时返回User实例,空时返回User::Guest(使用例如null对象模式),作为实现这一点的帮助。