angular - 导入 json 文件来模拟我的测试数据
问题描述
我尝试在我的茉莉花测试中模拟数据。
在我使用的组件规范中:
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 run test工作,但应用程序没有编译,因为
src/app/mocks/services/UserServiceStub.ts(4,15) 中的错误:错误 TS2304:找不到名称“需要”。
我试过修改tsconfig.json
"compilerOptions": {
"resolveJsonModule": true,
"esModuleInterop": true
}
并使用以下命令导入模拟 json:
import * as users from '../../mocks/users.json';
这破坏了我所有的导入,比如 momentJS(import * as moment from 'moment')
我读到我可以添加
"allowSyntheticDefaultImports": true
但这并没有帮助...
在我的测试中导入 json 文件的正确方法是什么?
编辑:我忘了说require在我的规范文件中有效,当我在/src/mocks/services/MyService.stub.ts中使用它时它会失败
我将存根服务修改为一个类,并将提供程序更改为使用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
并将其导入到您的存根文件中,例如:
import {USERS_OBJECTS} from '../mocks/users.json.ts';
然后您的存根服务将如下所示:
export const MyServiceStub = {
users: require('../../mocks/users.json'),
getUsers(): Observable<User[]> {
return of(USER_OBJECTS);
}
};
推荐阅读
- python - 大熊猫合并和连接
- python - 如何自动化 TeraTerm 应用程序
- python - 使用 --parallel 时 Django unittests 夹具加载错误
- css - 为什么标题背景颜色不是默认值:继承?
- reactjs - 使用自定义挂钩获取数据时,无法对未安装的组件执行 React 状态更新
- google-chrome-extension - Chrome 扩展弹出 URL
- html - Flexbox 第一行有一个项目,第二个有两个?
- android - Xamarin Forms Android 10 及更高版本在公共外部存储中按文件名查找视频并获取路径
- ios - 我可以测量从 iPhone 后置摄像头到物体的距离吗?
- tensorflow - AttributeError:“str”对象没有属性“base_dtype”