gpt4 book ai didi

angular - 导入 json 文件以模拟我的测试数据

转载 作者:太空狗 更新时间:2023-10-29 18:28:05 25 4
gpt4 key购买 nike

我尝试在 jasmine 测试中模拟数据。

在我使用的组件规范中:

describe('MyComponent', () => {
const user: User = require('../../mocks/user.json');

我将一个服务 stub 放入 /src/mocks/services/service.stub.ts

import { Observable, of } from 'rxjs';

export const MyServiceStub = {
users: require('../../mocks/users.json'),

getUsers(): Observable<any> {
return of(this.users);
}
};

使用此 npm run test 可以工作,但应用程序无法编译,因为

ERROR in src/app/mocks/services/UserServiceStub.ts(4,15): error TS2304: Cannot find name 'require'.

我试过修改 tsconfig.json

"compilerOptions": {
"resolveJsonModule": true,
"esModuleInterop": true
}

然后导入 mocks json:

import * as users from '../../mocks/users.json';

这破坏了我所有的导入,比如 momentJS(从“moment”导入 * 作为 moment)

我读到我可以添加

"allowSyntheticDefaultImports": true

但这并没有帮助...

在我的测试中导入 json 文件的正确方法是什么?

编辑:我忘了说 require 在我的规范文件中有效,当我在 /src/mocks/services/MyService.stub.ts

我将 stub 服务修改为一个类,并将提供程序更改为使用 useClass 而不是 useValue 但这没有帮助。

最佳答案

你可以有这样的东西:

export const USER_OBJECTS: User[] = [
{
'firstName': 'Ana',
'lastName': '..',
'fullName': '..',
'userName': '..',
'email': '...'
} as User,
{
'firstName': 'Lisa',
'lastName': '..',
'fullName': '..',
'userName': '...',
'email': '...'
} as User
];

在您的 mocks/users.json.ts 中并将其导入到您的 stub 文件中,例如:

import {USERS_OBJECTS} from '../mocks/users.json.ts';

然后您的 stub 服务将如下所示:

export const MyServiceStub =  {
users: require('../../mocks/users.json'),

getUsers(): Observable<User[]> {
return of(USER_OBJECTS);
}
};

关于angular - 导入 json 文件以模拟我的测试数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54589368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com