Jasmine 4.5中如何在afterEach块获取SpecResult的status属性
在原生Jasmine中获取afterEach里的测试状态(实现失败用例截图)
要在原生Jasmine的afterEach代码块中获取当前测试用例的状态,你需要通过this.currentSpec访问当前测试实例,再从其result属性中获取状态值,具体实现如下:
afterEach(async function() { // 获取当前测试用例的结果状态 const testStatus = this.currentSpec.result.status; // Jasmine的状态值包括:'passed'(通过)、'failed'(失败)、'pending'(挂起) if (testStatus === 'failed') { // 调用Selenium的截图方法 const screenshot = await driver.takeScreenshot(); // 示例:将截图保存为本地文件(需引入fs模块) require('fs').writeFileSync( `./screenshots/${this.currentSpec.description}.png`, screenshot, 'base64' ); } });
关键说明:
- 必须使用普通函数定义
afterEach,不能用箭头函数,否则this会丢失对当前测试上下文的引用,无法获取currentSpec。 - 你之前尝试的
jasmine.getEnv().SpecResult等写法错误,因为SpecResult是测试实例的结果对象,并非全局静态属性,只能通过当前测试实例的result属性访问。
内容的提问来源于stack exchange,提问作者Denis Myshkov
相关产品推荐
相关产品推荐

