Skip to content

Commit ef79d2c

Browse files
committed
test: perfect test cases for replaceVarible function in like case
1 parent 8d2d992 commit ef79d2c

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

test/cases/global/common/string/tools.test.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,23 @@ describe('string tools', () => {
5858
expect(replaceVariable(123 as any, { name: 'Ada' })).toBe(123);
5959
});
6060

61+
it('should treat $ special characters in replacement value as literals', () => {
62+
// $1, $2 不应被解释为捕获组引用
63+
expect(replaceVariable('value: {{val}}', { val: '$1' })).toBe('value: $1');
64+
expect(replaceVariable('value: {{val}}', { val: '$2' })).toBe('value: $2');
65+
// $$ 不应被解释为字面量 $
66+
expect(replaceVariable('value: {{val}}', { val: '$$' })).toBe('value: $$');
67+
// $& 不应被替换为整个匹配字符串
68+
expect(replaceVariable('value: {{val}}', { val: '$&' })).toBe('value: $&');
69+
// $` 和 $' 不应被替换为匹配前/后的内容
70+
expect(replaceVariable('value: {{val}}', { val: "$'" })).toBe("value: $'");
71+
expect(replaceVariable('value: {{val}}', { val: '$`' })).toBe('value: $`');
72+
// 混合场景
73+
expect(replaceVariable('result={{a}}&other={{b}}', { a: '$1', b: '$2' })).toBe(
74+
'result=$1&other=$2'
75+
);
76+
});
77+
6178
it('should replace sensitive text', () => {
6279
expect(replaceSensitiveText('Visit https://example.com/path?x=1')).toBe('Visit https://xxx');
6380
expect(replaceSensitiveText('token ns-abc-123 and ns-xyz')).toBe('token xxx and xxx');

0 commit comments

Comments
 (0)