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

Jasmine框架未在控制台输出测试用例日志问题求助

Jasmine测试无常规测试用例日志输出的问题排查

我使用Jasmine框架测试RESTful API,测试运行正常,但控制台仅在测试出错或全部结束后显示最终结果,不会输出每个测试用例的描述信息,示例输出如下:

1 spec, 0 failures Finished in 0.044 seconds Randomized with seed 19717 (jasmine --random=true --seed=19717)

测试文件示例

import { OrderStore } from '../../models/order';
import { logger } from '../../logger';

describe('OrderStore', () => {

  let orderStore = new OrderStore();

  describe('index method', () => {
    const test = 'should fetch orders and have the expected properties';
    it(test, async () => {
      try {
        // logger.warn(`Test: index method: ${test}`);
        const orders = await orderStore.index();
        expect(Array.isArray(orders)).toBe(true);
        expect(orders.length).toBeGreaterThan(0);
        orders.forEach((order) => {
          expect(order.id).toBeDefined();
          expect(order.quantity).toBeDefined();
          expect(order.order_status).toBeDefined();
          expect(order.created_at).toBeDefined();
          expect(order.product_id).toBeDefined();
          expect(order.user_id).toBeDefined();
        });
        // logger.warn(`Index method test passed successfully`);
      } catch (err) {
        // logger.error(`Index method test failed: ${err}`);
        throw err;
      }
    });
  });
});

Jasmine配置文件(jasmine.json)

{
  "spec_dir": "dist/tests",
  "spec_files": ["**/*[sS]pec.?(m)js"],
  "helpers": ["helpers/**/*.?(m)js"],
  "junit": {
    "suppressSpecReporter": false
  },
  "env": {
    "stopSpecOnExpectationFailure": false,
    "random": true,
    "reporters": [
      {
        "name": "jasmine-spec-reporter",
        "options": {
          "displayPending": true,
          "displayStacktrace": "all",
          "displaySuccessfulSpec": true,
          "displayFailedSpec": true,
          "displaySpecDuration": true,
          "displaySuiteNumber": true,
          "colors": {
            "success": "green",
            "failure": "red",
            "pending": "yellow"
          },
          "displaySpecErrorsSummary": true,
          "displaySummary": true,
          "displayFailuresSummary": true,
          "displayPendingSpec": true
        }
      }
    ]
  }
}

环境信息

  • Node版本:v18.1.0
  • Npm版本:8.8.0
  • Jasmine版本:5.1.0
  • Jasmine-spec-reporter版本:7.0.0
  • Supertest版本:6.3.3

可能的原因及解决办法

  • Reporter未正确注册:Jasmine 5.x版本仅通过jasmine.json配置reporter可能不生效,需手动在helper文件中注册。创建helpers/reporter.js文件,内容如下:

    const SpecReporter = require('jasmine-spec-reporter').SpecReporter;
    
    jasmine.getEnv().clearReporters();
    jasmine.getEnv().addReporter(new SpecReporter({
      displayPending: true,
      displayStacktrace: 'all',
      displaySuccessfulSpec: true,
      displayFailedSpec: true,
      displaySpecDuration: true,
      displaySuiteNumber: true,
      colors: {
        success: 'green',
        failure: 'red',
        pending: 'yellow'
      },
      displaySpecErrorsSummary: true,
      displaySummary: true,
      displayFailuresSummary: true,
      displayPendingSpec: true
    }));
    

    确保jasmine.json的helpers配置包含该文件。

  • 配置项冲突:检查junit.suppressSpecReporter设置为false,但如果同时启用junit reporter可能干扰控制台输出,可暂时注释junit相关配置测试。

  • 依赖兼容性问题:尝试重新安装依赖,清除缓存后重新安装:

    rm -rf node_modules package-lock.json
    npm install
    
  • 测试启动命令问题:确保启动测试的命令没有添加--silent等抑制输出的参数,直接用jasmine命令启动测试。

  • 异步测试异常捕获影响:测试用例中的try/catch可能干扰Jasmine对异步测试状态的监听,可尝试移除try/catch,让Jasmine直接处理异步错误,观察输出是否恢复。

内容的提问来源于stack exchange,提问作者Turtles

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 09:40:26