【发布时间】:2014-03-01 19:25:56
【问题描述】:
我熟悉 python unittest 测试,如果断言失败,则该测试被标记为“失败”并继续进行其他测试。另一方面,即使其中一个失败,茉莉花也会继续完成所有期望。在第一个期望失败后,如何让 Jasmine 停止处理测试?
it ("shouldn't need to test other expects if the first fails", function() {
expect(array.length).toBe(1);
// don't need to check this if the first failed.
expect(array[0]).toBe("foo");
});
我想错了吗?我有很多expect 的测试,当只有第一个确实错误时,显示所有堆栈跟踪似乎是一种浪费。
【问题讨论】:
-
如果您每次测试有这么多断言,那么您的代码每次测试太多。以这种方式开发可能更容易,但是当将来测试失败时,要知道问题出在哪里要困难得多(而且,这是测试的重点,不是吗?告诉未来的开发人员她/他创建一个错误)。我觉得 Jasmine 不会在第一次期望时停止很有用,它表明一切都出了问题,而不是首先出了什么问题。无论如何,至于问题本身,我看了一点,在第一次失败后没有找到任何让它退出的东西。
-
请记住,尽管在这个特定的示例中,第一个断言(数组长度)是多余的:如果您当时是,则不需要需要检查确切的数组长度无论如何也要检查确切的元素(因为数组的工作方式固有地暗示了它)。在 JS 中,唯一的例外是手动设置数组的长度并因此用
undefined元素填充,在这种情况下,您可以断言没有元素是undefined,或者数组的长度是不大于一个特定的数字。这样,断言将相互完成。
标签: jasmine