在xBehave.net中测试带空格的名字?

时间:2014-08-11 21:40:52

标签: .net tdd bdd

我试图在xBehave和NSpec之间做出决定。我喜欢NSpec的一件事是,如果使用某种语法,可以将测试名称指定为带空格的字符串:

context["when no subscriptions exist"] = () => { ... }

这很好,因为我会输入很多这些并且它们会被判刑,所以CamelCase或者下划线会是一种相对的痛苦。

任何人都知道在xBehave.net中做类似事情的方法吗?

1 个答案:

答案 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());
    }
}