Javascript 为什么茉莉被称为“a”;BDD";测试框架,即使没有“;给定/何时/然后“;支持?
在介绍中,它说: Jasmine是一个用于测试JavaScript代码的行为驱动开发框架 我读了BDD的几篇文章,似乎我们应该使用'Given/When/Then'来定义“场景”,这就是“cumber”所做的。但在《茉莉花》中,我看不到任何这样的方法Javascript 为什么茉莉被称为“a”;BDD";测试框架,即使没有“;给定/何时/然后“;支持?,javascript,jasmine,cucumber,bdd,Javascript,Jasmine,Cucumber,Bdd,在介绍中,它说: Jasmine是一个用于测试JavaScript代码的行为驱动开发框架 我读了BDD的几篇文章,似乎我们应该使用'Given/When/Then'来定义“场景”,这就是“cumber”所做的。但在《茉莉花》中,我看不到任何这样的方法 即使Jasmine没有这样的概念,我们仍然可以称它为“BDD”测试框架吗?我将Jasmine描述为javascript的单元测试框架,它具有大量的语法糖分,因此我们可以将“测试”更多地描述为描述行为的规范。当我们用业务语言描述/指定系统的整体行为时
即使Jasmine没有这样的概念,我们仍然可以称它为“BDD”测试框架吗?我将Jasmine描述为javascript的单元测试框架,它具有大量的语法糖分,因此我们可以将“测试”更多地描述为描述行为的规范。当我们用业务语言描述/指定系统的整体行为时,我们通常使用给定、何时、然后。当您描述系统的一个组件时,使用自然语言的好处通常较少——编程语言更好地支持较低抽象级别所需的更多细节 现在,单元测试是BDD的一个基本部分,jasmine以一种允许我们相当雄辩地指定行为的方式支持这一点,因此,是的,它肯定可以成为BDD测试工具/框架,即使它只针对较低级别的抽象 Cucumber只针对更高层次的抽象。事实上,它在编写低级规范方面的能力并没有使它成为一个BDD测试框架(BDD协作工具) 有趣的一点是,要进行BDD,您确实需要两种不同的测试工具,一种用于进行高级抽象,另一种用于进行低级详细规范。用于同一流程中的不同任务的不同工具 最后,GWT实际上只是场景编写的一个实现细节。这是一种区别对待的方式
- 设置状态G
- 描述动作W
- 审查行动的后果
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");
});
});
找到适合你的风格。您应该确保测试描述有效地描述了您正在测试的内容。您可以使用给定的when-then样式句子作为工具,以确保您的测试描述准确无误地描述测试内容。回答@PDHide的问题:Jasmine中允许这样做
您好,您如何使用嵌套描述?根据Jasmin的说法,description用于测试套件,而it用于测试用例 说: 嵌套描述块 对
descripe
的调用可以嵌套,并在任何级别定义规范。这使得套件可以组成一个功能树。在执行规范之前,Jasmine会沿着树走下去,依次执行每个beforeach
函数。在执行规范之后,Jasmine在每个函数之后以类似方式遍历
政府还说:
descripe
功能用于对相关规范进行分组[…]
谢谢你的精彩回答,对不起我的英语,我不能很好地理解这句话事实上,它在编写低级规范方面的长裤并没有使它成为一个BDD测试框架,你能用一个更简单的表达吗?对不起,这句话的意思是,cucumber不擅长驱动BDD生命周期的一部分(做低级测试的TDD部分),但这并不意味着它不是一个好的BDD工具。同样的标准也适用于茉莉花。它可能不擅长Cucumber擅长做的事情,但它非常擅长做底层工作,同时支持BDD的一个关键思想,即指定而不是测试。但是BDD不是从测试开始编码,所以你先编写测试,然后测试失败,然后你再编写代码吗?我想Jasmine可以在编码后用于测试,对吗?@Tester您也可以在编码后使用任何框架(BDD或TDD)进行测试,只需针对代码调用工具即可。虽然TDD专注于何时进行测试,BDD更多的是关于如何测试。我一直使用这种风格,大多数BDD框架在对描述及其缩进进行分组方面做得很好。`PASS ui/tests/reducers/drawerreducer.spec.js在抽屉关闭且动作类型为TOGGLE\u drawer的情况下切换导航抽屉✓ 它应将抽屉状态isOpen切换为真(2ms)✓ 如果当前状态未通过,则应将抽屉状态isOpen切换为true(2ms),前提是抽屉已关闭且动作类型为not ToggleU drawer✓ 它应该返回当前状态为“嗨,你怎么能使用嵌套描述?”?正如Jasmin所说,description用于测试套件,而it用于测试用例。