为什么Jasmine被称为"BDD"测试框架,即使没有"Given/When/Then"支持?

Fre*_*ind 15 javascript bdd cucumber jasmine

在介绍Jasmine时,它说:

Jasmine是一个用于测试JavaScript代码的行为驱动开发框架.

我读了几篇关于BDD的文章,似乎我们应该使用'Given/When/Then'来定义"Scenario",这就是"黄瓜"所做的.但是在Jasmine中,我看不到任何这样的方法.

即使没有这样的概念,我们仍然可以将Jasmine称为"BDD"测试框架吗?

小智 17

Jasmine并没有阻止你使用给定的时间,下面是一个示例,显示了在使用Jasmine时可以使用给定时间的两种方法.

describe("Given a string containing 'foo'", function(){
    var someString;
    beforeEach(function() {
        someString = "foo";
    });
    describe("When I append 'bar'", function(){
        beforeEach(function() {
            someString += "bar";
        });
        it("Then the string is 'foobar'", function(){
            expect(someString).toBe("foobar");
        });
    });
    it("When I append 'baz' Then the string is 'foobaz'", function(){
        someString += "baz";
        expect(someString).toBe("foobaz");
    });
});
Run Code Online (Sandbox Code Playgroud)

找到适合您的风格.您应该确保测试描述有效地描述了您正在测试的内容.您可以使用给定时间样式句子作为工具,以确保您的测试描述准确无误.


dia*_*ist 14

我将Jasmine描述为javascript的单元测试框架,它具有很多语法糖,因此我们可以将"测试"更多地编写为描述行为的规范.大多数情况下,我们使用Given,When,然后当我们用业务语言描述/指定系统的整体行为时.在描述系统的一个组件时,使用自然语言通常会带来更少的好处 - 编程语言可以更好地支持较低抽象级别所需的更多细节.

现在单元测试是BDD的一个基本部分,而jasmine以一种允许我们非常雄辩地指定行为的方式支持这一点,所以是的,它肯定是BDD测试工具/框架,即使它只针对较低的抽象级别.

黄瓜只针对更高的抽象水平.它的裤子在编写低级别规范时不会使它成为BDD测试框架(BDD协作工具).

一个有趣的观点是,要做BDD,你真的需要两种不同的测试工具,一种用于执行高级抽象,另一种用于执行较低级别的详细规范.用于不同任务的不同工具都是同一过程的一部分.

最后,GWT实际上只是场景编写的一个实现细节.它是一种差异化的方式

  • 建立国家G.
  • 描述行动W
  • 检查行动的后果T.