在Exercism闰年习题中,如何在Jasmine测试里进入调试器?
在Jasmine测试中启用调试器的方法
我了解你正在通过Exercism的练习打磨JavaScript技能,目前卡在闰年习题的Jasmine测试调试上——别担心,下面几种方法能帮你轻松进入调试模式:
1. 直接插入debugger语句 + Node.js调试模式
这是最直接的方式:
- 打开你的
leap.spec.js,在需要调试的测试用例里添加debugger;语句,比如:
var Year = require('./leap'); describe('Leap year', function () { it('is not very common', function () { debugger; // 断点就设在这里 const year = new Year(2015); expect(year.isLeap()).toBe(false); }); });
- 接着在终端用Node的调试命令运行测试:
node inspect node_modules/jasmine/bin/jasmine.js leap.spec.js
- 代码会自动在
debugger处暂停,你可以用这些常用调试命令:next:执行下一行(不进入函数)step:进入当前调用的函数watch('year'):监听year变量的变化repl:进入交互模式,直接查看变量值
2. 用Chrome DevTools可视化调试
如果你偏爱图形化界面,试试这个:
- 用
--inspect标志启动测试:
node --inspect node_modules/jasmine/bin/jasmine.js leap.spec.js
- 打开Chrome浏览器,输入
chrome://inspect,在「Remote Target」区域找到你的测试进程,点击「inspect」就能打开熟悉的DevTools面板。 - 和调试前端代码一样,你可以设置断点、查看调用栈、监控变量,操作起来更直观。
3. 在业务代码中加断点调试逻辑
如果想调试leap.js里的isLeap方法,直接在业务代码里加debugger就行:
var Year = function (year) { this.year = year; // 这里提醒下:你原来的代码没给实例赋值year,会导致isLeap方法报错,记得补上! }; Year.prototype.isLeap = function () { debugger; // 进入方法时触发断点 return (this.year % 4 === 0 && this.year % 100 !== 0) || this.year % 400 === 0; }; module.exports = Year;
- 再用上面任意一种方式运行测试,就能深入到方法内部,检查
this.year的值和逻辑执行流程了。
内容的提问来源于stack exchange,提问作者Kurt Peek
相关产品推荐
相关产品推荐

