我刚开始在一个 Web 项目中使用 BDD,使用 SpecFlow 和 WatiN 通过浏览器自动执行操作,我不太确定如何编写我的步骤。
我试图从测试中驱动所有内容,并且以 TDD 方式,除非需要通过测试,否则不要写任何东西。(我也在做单元测试来驱动细节,但这个问题与此无关)。我感到困惑的一件事是页面之间的导航,以及是否/如何在规范中定义。
第一个测试涉及输入一些详细信息并确保它们显示在列表中。我的第一次尝试是这样的:
场景:添加详细信息选项 1
鉴于我在“主页”页面
上当我单击“添加详细信息”
并在名称字段中输入“John Smith”
并单击“保存”
然后“John Smith”出现在列表中
但是,这涉及在几个页面之间导航,所以我不知道这是否需要明确 - 否则,我只需要假设我在正确的页面上,或者显然与我的哪个页面无关的步骤m on(例如,“当我单击添加详细信息时”)有断言来检查我在哪个页面上。
我们是否检查场景中具有明确步骤的页面?
场景:添加详细信息选项 2
假设我在“主页”页面
上当我单击“添加详细信息”
并且我在“添加详细信息”页面上
并且我在名称字段中输入“John Smith”
然后单击“保存”
并且我在“主页” page
然后“John Smith”出现在列表中
或者我们是否按照选项 1 的步骤进行操作,只是没有明确提及?
例如,是否应该单击“添加详细信息”检查我们是否最终进入了正确的页面?
public void WhenIClickAddDetils{
// syntax probably wrong, not important
Assert.That(IE.Button("AddDetails").exists);
IE.Button("AddDetails").click();
Assert.That(IE.PageTitle = "Add Details")); // do we check this here?
}
或者我们应该在输入详细信息之前检查我们是否在正确的页面上?
public void WhenIEnterDetils{
Assert.That(IE.PageTitle = "Add Details")); // do we check this here?
IE.TextField("Name").value = "John Smith";
// etc
}
或者,我们可以从
鉴于我在“添加详细信息”页面
并且只需使该步骤包括从主页开始并单击“添加详细信息按钮”以进入该页面。尽管在我们单击“保存”后导航回主页仍然存在相同的问题。
有什么想法吗?