forked from alibaba/lowcode-engine
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathscript.test.ts
More file actions
50 lines (38 loc) · 1.28 KB
/
script.test.ts
File metadata and controls
50 lines (38 loc) · 1.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import {
evaluate,
evaluateExpression,
newFunction,
} from '../../src/script';
describe('evaluate', () => {
test('should evaluate the given script', () => {
globalThis.console = { log(message: string) {} } as any;
const logSpy = vi.spyOn(globalThis.console, 'log')
globalThis.console.log('Hello, world!')
// FIXME: 测试不过,在浏览器中手动测试是正常的,可能是vitest配置有问题
// const script = 'console.log("Hello, world!");';
// evaluate(script);
expect(logSpy).toHaveBeenCalledWith('Hello, world!');
});
});
describe('evaluateExpression', () => {
test('should evaluate the given expression', () => {
const expr = 'return 1 + 2';
const result = evaluateExpression(expr);
expect(result).toBe(3);
});
});
describe('newFunction', () => {
test('should create a new function with the given arguments and code', () => {
const args = 'a, b';
const code = 'return a + b';
const result = newFunction(args, code);
expect(result).toBeInstanceOf(Function);
expect(result(1, 2)).toBe(3);
});
test('should return null if an error occurs', () => {
const args = 'a, b';
const code = 'return a +;'; // Invalid code
const result = newFunction(args, code);
expect(result).toBeNull();
});
});