34
如果我的测试代码中永远不应该达到(例如承诺序列的fail
子句),我该如何强制 - 测试失败?强制失败茉莉花测试
我使用类似expect(true).toBe(false);
的东西,但这不太好。
另一种方法是等待测试超时,这是我想避免的(因为它很慢)。
如果我的测试代码中永远不应该达到(例如承诺序列的fail
子句),我该如何强制 - 测试失败?强制失败茉莉花测试
我使用类似expect(true).toBe(false);
的东西,但这不太好。
另一种方法是等待测试超时,这是我想避免的(因为它很慢)。
茉莉花提供了一个全球性的方法fail()
,它可以规范块it()
内使用,并允许使用自定义错误消息:
it('should finish successfully', function (done) {
MyService.getNumber()
.success(function (number) {
expect(number).toBe(2);
done();
})
.fail(function (err) {
fail('Unwanted code branch');
});
});
这是内置了茉莉花的功能,它无处不在正常工作中比较我在下面提到的'错误'方法。
更新之前:
您可以从代码分支抛出一个错误,它会立即失败,一个规范,你就能够提供自定义错误消息:
it('should finish successfully', function (done) {
MyService.getNumber()
.success(function (number) {
expect(number).toBe(2);
done();
})
.fail(function (err) {
throw new Error('Unwanted code branch');
});
});
但你应该小心,如果你想从Promise成功处理程序then()
中抛出一个错误,因为错误将会被吞噬并永远不会出现。此外,您应该了解应用程序中可能的错误处理程序,这可能会在您的应用程序中发现此错误,因此无法通过测试。
还有'done.fail('message')'。 – TrueWill
对于那些停留在较旧版本的Jasmine中的人,'失败'方法在1.3中不可用,但可以通过'throw new Error(message)'有效地填充。效果可以取决于你的测试运行者 - 也可以考虑像'expect('[失败的原因]')toBeNull()'。 – ryanwebjackson