您想测试一下,当主厨查看她的主页时,她会看到她自己创建的食谱.你还想测试她看到有食谱在等待她的批准.
我可以想到两种方法:
>测试视图是否包含某些单词,例如“您的食谱”和“等待您批准的食谱”
>将不必要的属性添加到您正在使用的html元素中,以便您可以检查具有“id = recipe_1”或“data-for-the-sake-of-testing = 1”的元素
我非常不喜欢这两种方法.
为什么接近#1很糟糕
>难以置信的脆弱测试.每次要对副本进行微小更新时,测试都会中断.
> i18n?如何使用这种方法?
可能有更多原因,但这两个原因相当庞大.
为什么接近#2很糟糕
为了测试,有多余的标记是多么烦人啊!为了测试,用户不应该增加下载大小.
对此有什么好处?我有兴趣听到任何替代方案,无论你用什么语言思考.我主要想在Ruby,Test :: Unit,Minitest,RSpec和Cucumber(虽然我的Cuke技能陈旧),但是如果其他语言/框架如果想到这一点,我也很想知道他们在做什么.
使用页面范例.尽可能在能力级别(高级别)尽可能地以人为方式表达步骤,并使用特定示例.例如,如果我使用黄瓜,我可能会说:
Given the sous-chef has created a recipe for Frog Pie
When the chef looks for recipes to approve
Then the recipe for Frog Pie should be in the list.
在这些步骤的代码中,实例化或查找您正在寻找的特定页面,其中页面是表示页面功能的对象.然后,该页面可以包含用户可以对页面执行的所有操作 – 查找配方,批准配方,移动到其他页面等.
这样,如果您需要更改步骤的基础代码,您只需在一个位置更改它,并且特定页面的所有更改将在一起.因为您已经根据所提供的功能来表达场景,所以场景不太可能需要进行太多更改(除非您发现您的业务需要与您提供的功能不同的功能).
这也适用于基于窗口的应用程序,每个小部件或模块都是特定页面.
只有用于测试的额外ID也没关系.有时设计师也喜欢使用它们.