我尝试在茉莉花测试中模拟数据。
在组件规格中,我使用:
describe('MyComponent', () => {
const user: User = require('../../mocks/user.json');
我放在 /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运行测试可以运行,但是由于以下原因,该应用无法编译
src / app / mocks / services / UserServiceStub.ts(4,15)中的ERROR:错误 TS2304:找不到名称“ require”。
我尝试用
修改 tsconfig.json"compilerOptions": {
"resolveJsonModule": true,
"esModuleInterop": true
}
并使用以下命令导入模拟json:
import * as users from '../../mocks/users.json';
这破坏了我所有的进口,例如momentJS(从*'moment'开始的进口*)
我读到我可以添加
"allowSyntheticDefaultImports": true
但这没有帮助...
在测试中导入json文件的正确方法是什么?
编辑:我忘了说 require 在我的规格文件中有效,当我在 /src/mocks/services/MyService.stub.ts
我将存根服务修改为一个类,并更改了提供程序以使用 useClass 而不是 useValue ,但这无济于事。
答案 0 :(得分:2)
您可以拥有类似的内容:
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
中,并将其导入到您的存根文件中,例如:
import {USERS_OBJECTS} from '../mocks/users.json.ts';
然后您的存根服务如下:
export const MyServiceStub = {
users: require('../../mocks/users.json'),
getUsers(): Observable<User[]> {
return of(USER_OBJECTS);
}
};