node.js - 为 Nodejs 上的笑话测试设置测试数据库
问题描述
我对用笑话进行测试很陌生,并且正在学习为我的代码编写测试。当前设置是:
//cityService.ts:
import {inject, injectable} from "inversify";
import {NUCLEUS_TYPES} from "../nucleus/NUCLEUS_TYPES";
import {AppLogger} from "../libs/logger";
import {CityReadOnlyDao, CityReadWriteDao} from "../nucleus/daos/cityDao";
import {ICityAttributes} from "../nucleus/interfaces/attributeInterfaces";
import {ICityModel} from "../nucleus/interfaces/modelInterfaces";
import {BaseService} from "../nucleus/services/baseService";
import {escapeRegExp} from "../utils/helper";
import {SortOrder} from "../nucleus/constants/enums";
@injectable()
export class CityService extends BaseService<ICityModel, ICityAttributes>{
constructor(@inject(NUCLEUS_TYPES.AppLogger) protected appLogger: AppLogger,
@inject(NUCLEUS_TYPES.ReadOnlyDao.City) protected cityReadOnlyDao: CityReadOnlyDao,
@inject(NUCLEUS_TYPES.ReadWriteDao.City) protected cityReadWriteDao: CityReadWriteDao){
super(cityReadOnlyDao, cityReadWriteDao);
}
async suggestCity(req) {
this.appLogger.debug(typeof req.body.query);
let regQuery = new RegExp(escapeRegExp(req.body.query.trim()), 'i');
let cities = await this.find({
condition: {'name': {$regex: regQuery}},
sortField: 'used',
sortOrder: SortOrder.DESC,
count: (req.body.limit ? Number(req.body.limit) : 10),
start: (req.body.skip ? Number(req.body.skip) : 0)
});
return ({state: true, cities});
}
}
样本测试是:
import { CityService } from "../src/services/cityService";
import container from "../src/libs/ioc";
let cityService = container.get<CityService>(TYPES.Service.City);
test("Testing with full Name", async () => {
expect.hasAssertions();
let response = await cityService.suggestCity({
body: {
query: 'London'
}
});
expect(response.cities).toEqual(expect.arrayContaining([expect.objectContaining({ name: 'London' })]));
});
测试运行并顺利通过。现在我怀疑我是否通过这个测试来访问我的数据库。有没有办法在没有调用我的数据库的函数的情况下对此进行测试?也许制作一个模拟数据库。有人可以指出我应该如何进行的正确方向吗?
解决方案
推荐阅读
- java - 使用 FirestorePagingAdapter 或手动分页哪个更好
- excel - VBA - 从关闭的工作簿中的范围复制值
- operating-system - 哪些虚拟磁盘格式与 GPT 兼容?
- java - 如何从 Activity 的片段返回到 viewpager 中的片段
- sql - BigQuery 中的 date_format() 等效项
- sql - 如何使用 Python 和 psycopg2 从 .json 文件在 Postgresql 中创建新表?
- html - 如何在 git 中结帐到子分支
- reactjs - 数组中是否需要使用 NavLink、Interface?
- google-chrome - S3 导入的图像偶尔会损坏:在 Chrome 上呈现,但在 Firefox 上不呈现
- javascript - JavaScript如何创建一个断言来测试一个字符串列表是否包含一些子字符串