我试图在xBehave和NSpec之间做出决定。我喜欢NSpec的一件事是,如果使用某种语法,可以将测试名称指定为带空格的字符串:
context["when no subscriptions exist"] = () => { ... }
这很好,因为我会输入很多这些并且它们会被判刑,所以CamelCase或者下划线会是一种相对的痛苦。
任何人都知道在xBehave.net中做类似事情的方法吗?
答案 0 :(得分:1)
我刚开始使用xBehave.net,但典型的测试看起来像这样。
public class CalculatorFeature
{
[Scenario]
public void Addition(int x, int y, Calculator calculator, int answer)
{
"Given the number 1"
.Given(() => x = 1);
"And the number 2"
.And(() => y = 2);
"And a calculator"
.And(() => calculator = new Calculator());
"When I add the numbers together"
.When(() => answer = calculator.Add(x, y));
"Then the answer is 3"
.Then(() => Assert.Equal(3, answer));
}
}
此示例取自快速入门部分(https://github.com/xbehave/xbehave.net/wiki/Quickstart)。因此,您可以用自然语言编写所有给定的,何时,然后或任何您喜欢的内容。
我个人使用"建立,何时,它应该"接近并使用_()
扩展方法。
我的方法测试看起来像这样
public class ListStorySpecifications
{
[Scenario]
public void ListStories(Backlog backlog)
{
IReadOnlyCollection<string> stories = null;
"establish an empty backlog"._(() =>
{
backlog = new Backlog();
});
"when listing all stories"._(() =>
{
stories = backlog.GetAll();
});
"it should return an empty list"._(() =>
stories.Should().BeEmpty());
}
}