所以我知道,当涉及到用户故事场景时,具体是一件好事.但是,我经常谈到自己的问题:我的情景有多具体?
例如,对于用户故事:
为了允许项目成员在项目上进行协作,作为项目经理,我希望能够注册新项目
我们可以有以下场景:
鉴于项目从未在系统中注册过,当项目经理注册该项目时,注册的项目应出现在指定成员的项目列表中
或者我们可以更具体地说:
由于斯科特是一名项目经理和计算器一体化项目从未在系统中登记,当斯科特注册计算器集成项目指定简作为项目成员,则计算器一体化项目应该会出现在简的项目的列表
在编写BDD规范时,我发现了第二个"更具体"的方法.有像scottTheProjectManager而不是projectManagerStub的东西是:
我的结论是对的吗?当故事发生变化时,这种特殊性会对我有害吗?
非常感谢!
上面的问题不仅仅是关于拥有人名而不是角色名,而是关于用实例的名称替换场景中的所有占位符.实际上,我并不是说我们实际上有一个名叫斯科特的人担任项目经理,它只是给抽象占位符命名以实现上述好处.
我将尝试通过包含以下代码来展示如何实现这些好处,该代码使用StoryQ框架表示完整的BDD样式规范
[TestFixture]
public class ProjectRegistrationSpecs
{
[Test]
public void ProjectRegistration()
{
new Story("Project Registration")
.InOrderTo("allow project members to collaborate over a project")
.AsA("project manager")
.IWant("to be able to register new projects")
.WithScenario("New Project Registration")
.Given(ScottIsAProjectManager)
.And(StackoverflowIntegrationProjectHasNeverBeenRegistered)
.When(ScottRegistersStackoverflowIntegrationProjectSpecifyingJaneAsAnAnalyst)
.Then(StackoverflowIntegrationProjectShouldAppearInJanesListOfProjects)
.Execute();
}
//Since Scott …Run Code Online (Sandbox Code Playgroud)