From 3ff329960c4468237b2c9fa3fedf37632bc20bf4 Mon Sep 17 00:00:00 2001 From: fengmk2 Date: Tue, 4 Feb 2025 22:47:37 +0800 Subject: [PATCH] fix: type defines --- package.json | 2 +- src/app/extend/application.ts | 14 +++++--------- src/typings/index.d.ts | 4 ++++ test/app_proxy.test.ts | 8 ++++---- 4 files changed, 14 insertions(+), 14 deletions(-) create mode 100644 src/typings/index.d.ts diff --git a/package.json b/package.json index ec41af4..c8d1862 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "@types/methods": "^1.1.4", "@types/mocha": "10", "@types/node": "22", - "egg": "beta", + "egg": "^4.0.8", "egg-errors": "^2.2.1", "egg-tracer": "^2.0.0", "eslint": "8", diff --git a/src/app/extend/application.ts b/src/app/extend/application.ts index 8dc80c6..168467b 100644 --- a/src/app/extend/application.ts +++ b/src/app/extend/application.ts @@ -6,7 +6,7 @@ import mergeDescriptors from 'merge-descriptors'; import { isAsyncFunction, isObject } from 'is-type-of'; import { mock, restore } from 'mm'; import type { HttpClient } from 'urllib'; -import { Transport, EggLogger, LoggerLevel, LoggerMeta } from 'egg-logger'; +import { Transport, Logger, LoggerLevel, LoggerMeta } from 'egg-logger'; import { EggCore, EggCoreOptions, Context } from '@eggjs/core'; import { getMockAgent, restoreMockAgent } from '../../lib/mock_agent.js'; import { @@ -47,10 +47,6 @@ export default abstract class ApplicationUnittest extends EggCore { [key: string]: any; declare options: MockOptions & EggCoreOptions; _mockHttpClient?: MockHttpClientMethod; - declare logger: EggLogger; - declare coreLogger: EggLogger; - abstract getLogger(name: string): EggLogger; - declare httpClient: HttpClient; declare httpclient: HttpClient; /** @@ -404,7 +400,7 @@ export default abstract class ApplicationUnittest extends EggCore { * @param {String|Logger} [logger] - logger instance, default is `app.logger` * @function App#mockLog */ - mockLog(logger?: string | EggLogger) { + mockLog(logger?: string | Logger) { logger = logger ?? this.logger; if (typeof logger === 'string') { logger = this.getLogger(logger); @@ -424,7 +420,7 @@ export default abstract class ApplicationUnittest extends EggCore { }); } - __checkExpectLog(expectOrNot: boolean, str: string | RegExp, logger?: string | EggLogger) { + __checkExpectLog(expectOrNot: boolean, str: string | RegExp, logger?: string | Logger) { logger = logger || this.logger; if (typeof logger === 'string') { logger = this.getLogger(logger); @@ -460,7 +456,7 @@ export default abstract class ApplicationUnittest extends EggCore { * @param {String|Logger} [logger] - logger instance, default is `ctx.logger` * @function App#expectLog */ - expectLog(str: string | RegExp, logger?: string | EggLogger) { + expectLog(str: string | RegExp, logger?: string | Logger) { this.__checkExpectLog(true, str, logger); } @@ -470,7 +466,7 @@ export default abstract class ApplicationUnittest extends EggCore { * @param {String|Logger} [logger] - logger instance, default is `ctx.logger` * @function App#notExpectLog */ - notExpectLog(str: string | RegExp, logger?: string | EggLogger) { + notExpectLog(str: string | RegExp, logger?: string | Logger) { this.__checkExpectLog(false, str, logger); } diff --git a/src/typings/index.d.ts b/src/typings/index.d.ts new file mode 100644 index 0000000..53c65c7 --- /dev/null +++ b/src/typings/index.d.ts @@ -0,0 +1,4 @@ +// make sure to import egg typings and let typescript know about it +// @see https://github.com/whxaxes/blog/issues/11 +// and https://www.typescriptlang.org/docs/handbook/declaration-merging.html +import 'egg'; diff --git a/test/app_proxy.test.ts b/test/app_proxy.test.ts index c660b56..db63be8 100644 --- a/test/app_proxy.test.ts +++ b/test/app_proxy.test.ts @@ -30,7 +30,7 @@ describe('test/app_proxy.test.ts', () => { it('should not set property', async () => { assert.throws(() => { - app.curl = function* mockCurl() { + (app as any).curl = async function mockCurl() { return 'mock'; }; }, /can't set curl before ready/); @@ -100,11 +100,11 @@ describe('test/app_proxy.test.ts', () => { after(() => app.close()); it('should override property with setter', async () => { - app.curl = async function mockCurl() { + (app as any).curl = async function mockCurl() { return 'mock'; }; - const data = await app.curl(); - assert(data === 'mock'); + const data = await app.curl('http://127.0.0.1:7001'); + assert.equal(data, 'mock'); }); it('should ignore when set property on MockApplication', async () => {