Javascript 什么时候我需要在Jasmine中的每个区块之前使用?
我刚开始用Jasmine学习单元测试。我经历了茉莉花的故事,在这片土地上搜寻了很多。请参阅下面的代码Javascript 什么时候我需要在Jasmine中的每个区块之前使用?,javascript,unit-testing,jasmine,Javascript,Unit Testing,Jasmine,我刚开始用Jasmine学习单元测试。我经历了茉莉花的故事,在这片土地上搜寻了很多。请参阅下面的代码 describe('calculator', function () { var calculator; beforeEach( function(){ calculator = new myApp.Calculator(); }); describe('sum', function () { it('1 + 1 should equal 2', functio
describe('calculator', function () {
var calculator;
beforeEach( function(){
calculator = new myApp.Calculator();
});
describe('sum', function () {
it('1 + 1 should equal 2', function () {
expect(calculator.add(1, 1)).toBe(2);
});
});
describe('subtract', function () {
it('3 - 2 should equal 1', function () {
expect(calculator.subtract(3, 2)).toBe(1);
});
});
});
在这里,我在每个块之前的中初始化/创建了Calculator实例。如果我直接在第一个descripe
块中编写它,而不在每个块之前使用,它也可以正常工作
我了解每个
之前和之后的用户。但是在这种情况下(或者对于任何这样的情况),我真的需要在每个
之前使用,在没有人更新计算器
实例的情况下,在每个规范中,我们只是使用计算器
的方法吗?如果我在每次测试之前使用,
,它将在每次测试之前创建新实例。但是为什么我总是需要一个新实例,而我的测试用例中没有一个不会更改/更新我的实例?如果您将创建计算器实例的代码行直接放在描述中,而不在每次之前使用
,那么该实例将只创建一次(在测试用例运行开始时)。
但是如果您将在每个
块之前放入,在这种情况下,将为每个单独的测试用例运行创建新实例,因此每个测试用例都将有一个新实例
对于每个特定的测试用例,有一个新的实例是一个很好的实践。因为这是一条经验法则,一个测试用例永远不应该依赖于另一个测试用例。测试用例应始终按照相关顺序运行。如果您将创建计算器实例的代码行直接放在描述中,而不在每次运行之前使用,
,那么实例将只创建一次(在测试用例运行开始时)。
但是如果您将在每个
块之前放入,在这种情况下,将为每个单独的测试用例运行创建新实例,因此每个测试用例都将有一个新实例
对于每个特定的测试用例,有一个新的实例是一个很好的实践。因为这是一条经验法则,一个测试用例永远不应该依赖于另一个测试用例。测试用例应该始终以依赖顺序运行。当单独运行而不是批量运行时,您的测试开始产生不同的结果时,您会怎么做?当单独运行而不是批量运行时,您的测试开始产生不同的结果时,您会怎么做?这正是我的疑问。为什么我总是需要一个新的实例,如果我的测试用例没有一个不依赖于另一个或者没有一个测试用例更新计算器实例?我在这里没有任何状态。你能举个例子说明它会失败或行为不端吗!是的,这对您当前的场景来说是好的,但这不是一个好的实践,因为如果其他人稍后跳到您的代码上,并且他们开始编写依赖于实例的新测试用例,在这种情况下,它将失败。这正是我的疑问。为什么我总是需要一个新的实例,如果我的测试用例没有一个不依赖于另一个或者没有一个测试用例更新计算器实例?我在这里没有任何状态。你能举个例子说明它会失败或行为不端吗!是的,这对您当前的场景来说是好的,但这不是一个好的实践,因为如果其他人稍后跳到您的代码上,并且他们开始编写依赖于实例的新测试用例,在这种情况下,它将失败。