From 44dd9ce0991bca18b1fade5c0b78a6987d299b9e Mon Sep 17 00:00:00 2001 From: dr2009 Date: Sat, 23 Mar 2024 22:43:24 +0800 Subject: [PATCH] fix: [#1347] LocalStorage.setItem non-string value should to be string (#1348) --- packages/happy-dom/src/storage/Storage.ts | 2 +- packages/happy-dom/test/storage/Storage.test.ts | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/happy-dom/src/storage/Storage.ts b/packages/happy-dom/src/storage/Storage.ts index dea84927..983343c8 100644 --- a/packages/happy-dom/src/storage/Storage.ts +++ b/packages/happy-dom/src/storage/Storage.ts @@ -31,7 +31,7 @@ export default class Storage { * @param item Item. */ public setItem(name: string, item: string): void { - this[name] = item; + this[name] = String(item); } /** diff --git a/packages/happy-dom/test/storage/Storage.test.ts b/packages/happy-dom/test/storage/Storage.test.ts index 79117e97..5f9a3562 100644 --- a/packages/happy-dom/test/storage/Storage.test.ts +++ b/packages/happy-dom/test/storage/Storage.test.ts @@ -51,6 +51,16 @@ describe('Storage', () => { expect(storage['key2']).toBe('value2'); storage['key1'] = 'value3'; expect(storage.getItem('key1')).toBe('value3'); + + // @ts-expect-error + storage.setItem('key1', 1); + expect(storage.getItem('key1')).toBe('1'); + expect(storage['key1']).toBe('1'); + + // @ts-expect-error + storage.setItem('key1', {}); + expect(storage.getItem('key1')).toBe('[object Object]'); + expect(storage['key1']).toBe('[object Object]'); }); });