You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 16:46:27