试试茉莉花
Try/catch with jasmine
本文关键字:茉莉花 更新时间:2023-09-26
我有一个函数,它试图将参数解析为JSON对象。如果失败,则使用回退。
解析代码.js
function parseCode(code) {
try {
usingJSONFallback(code);
} catch() {
usingStringFallback(code);
}
}
function usingJSONFallback(code) {
JSON.parse(code);
//...more code here
}
function usingStringFallback(code) {
//... more code here
}
main.js
//Some code...
parseCode('hello world!');
我看不到此代码中有任何问题。然而,当我试图为"catch"情况添加一些单元测试(使用Jasmine 2.3)时,Jasmine自己捕获JSON解析错误并中止测试:
例如,对于Jasmine测试,如:
describe('parseCode', function() {
it('Parses a string', function() {
var code = 'My code without JSON';
expect(parseCode(code)).toThrow();
});
});
甚至像这样的测试
describe('usingJSONFallback', function() {
it('Throw an error if there is a string', function() {
var code = 'My code without JSON';
expect(usingJSONFallback(code)).toThrow();
});
});
在这两种情况下,测试都失败并返回:
SyntaxError: Unable to parse JSON string
我读过关于使用throw Error(...)
抛出受控异常的文章,但这显然不适合我的情况。关于如何在这种情况下使用Jasmine,有什么建议吗?
您不能自己调用函数,您必须让Jasmine通过添加包装器函数来调用它。另一种解释方法是,当您测试expect
抛出时,它需要一个传递给它的函数。
describe('parseCode', function() {
it('Parses a string', function() {
var code = 'My code without JSON';
expect(function() { parseCode(code) }).toThrow();
});
});
从他们的示例页面中,请注意该函数已传入但未被调用。
it("The 'toThrowError' matcher is for testing a specific thrown exception", function() {
var foo = function() {
throw new TypeError("foo bar baz");
};
expect(foo).toThrowError("foo bar baz");
expect(foo).toThrowError(/bar/);
expect(foo).toThrowError(TypeError);
expect(foo).toThrowError(TypeError, "foo bar baz");
});
您是否尝试过包装给定的fn?通过这种方式,jasmine将能够自己执行它,并提供额外的代码来捕获它
describe("usingJSONFallback", function() {
it("should throw an error if it's called with a string", function() {
expect(function () {
usingJSONFallback("any string");
}).toThrow();
});
});
相关文章:
- 迷你$provider注入茉莉花和角
- 茉莉花宝石-耙茉莉花:ci dons't运行测试
- 茉莉花节点测试;t正在运行
- Meteor集成测试,在velocity'她的镜子上有茉莉花
- 我可以把茉莉花规格报告器的输出写入文件吗
- 茉莉花 - 未调用方法
- 在测试间谍的上下文中,存根和mock之间有什么区别?(茉莉花)
- 使用茉莉花测试木偶视图和车把模板
- 使用茉莉花测试主干关系模型
- JQuery/骨干删除在茉莉花中不起作用
- 茉莉花和元素的位置
- 量角器 iOS 自动化:茉莉花规范超时.重置 Web 驱动程序控制流
- 茉莉花Maven插件包括我的脚本使用文件协议
- 运行茉莉花测试用例
- 茉莉花钟的工作原理
- 茉莉花节点没有输出
- 茉莉花与iframe固定
- 分离“;上下文”;以及“;触发器”;茉莉花
- 为什么这个茉莉花节点测试没有失败
- 茉莉花 - 如何测试确认导航