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
相关产品推荐
相关产品推荐

