gpt4 book ai didi

angularjs - Jasmine 根据规范的多期望与根据规范的单期望

转载 作者:行者123 更新时间:2023-12-02 22:24:21 25 4
gpt4 key购买 nike

我开始使用 Jasmine 来测试 angularjs,但很快我开始想知道哪种方法是好的,为什么?我根据规范选择了单个预期。我喜欢它,因为非技术人员可以更好地理解它,这就是 BDD 的要点,不是吗?例如

describe('Testing multple expect per spec My Service', function() {
beforeEach(/* some stuff*/);
it('test part ',function(){
expect('part 1').toBe('part one'); //
expect('part 2').toBe('part two'); // some crazy stuff, just for example
}
}

describe('Testing single expect per spec My Service', function() {
beforeEach(/* some stuff*/);
it('test part one ',function(){
expect('part 1').toBe('part one'); // just for example
}
it('test part two ',function(){
expect('part 2').toBe('part two'); // just for example
}
}

但很快就遇到了麻烦,我意识到 beforeEach 实际上正在重置/创建我的服务的新对象(上面的示例中未显示),因此封装的行为没有正确反射(reflect)。

例如,我正在测试注入(inject)服务的firstMethod()部分,它更改服务的数据结构“测试第一部分”,然后在第二个规范中我正在测试第二个方法(),它测试更改数据“测试第二部分”中的结构。但由于 beforeEach 重新注入(inject)了我的服务,“测试第二部分”失败了。我该如何解决这种情况?

请帮助 Jasmine 新手。

最佳答案

您的单元测试应该彼此独立。否则,如果测试2失败,你就不知道是方法2有问题,还是方法1中的设置有问题。

要处理这种情况,您可以在测试 2 开始时进行一些额外的设置,确保服务处于测试方法 2 中的逻辑所需的任何状态。如果多个测试需要该设置,您可以将其放入嵌套的 describebeforeEach 中。

正如 @ktharsis 指出的那样,只要验证相同的“行为”,每个规范的多个期望就可以。每个测试应该对应一种行为,而不一定是一个断言。

关于angularjs - Jasmine 根据规范的多期望与根据规范的单期望,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31996124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com