正如托马斯说,让这个简单的关键是把事情推下去。要做到这一点,你需要应用一个非常有纪律的简单模式。
该模式是使每个步骤定义实现一个单一的调用辅助方法。一旦你在你的助手方法中,那么你可以使用像使用环境变量,配置或一些条件来选择实现的技术。
一个例子可能会说明这一点。可以说,这两个应用程序都有能力添加一个朋友。当你第一次添加此功能,您将有一个像
When 'I add a friend' do
fill_in first_name: 'Frieda'
fill_in last_name: 'Fish'
...
end
这需要成为
When 'I add a friend' do
add_friend name: 'Frieda'
end
通过
module FriendStepHelper
def add_friend(...)
// Only start thinking about IOS or Android from here down.
...
end
end
实现现在这似乎有点痛苦的一步,但你所做的就是将这个问题从Cucumber的领域(它不是为了解决这类问题而设计的)中解决,并将它移植到Ruby的领域当中,这个领域当然是为了处理这种类型的pr oblem。
现在,您已经掌握了编程语言,您可以使用各种技术来使用条件优雅而简单的例如
#use hungarian prefix's
def ios_add_friend
def droid_add_friend
#return early from os specific functions if wrong OS
def ios_add_friend
return if droid?
...
end
# run both implementations when they are different
def add_friend
ios_add_friend
droid_add_friend
end
# loads of other alternatives
...
这正是我一直在寻找的东西。谢谢。 –