【发布时间】:2022-02-08 12:40:28
【问题描述】:
我正在尝试使用 lowdb 模拟我的数据访问对象。但我不确定如何根据我的实现来模拟集合。
AuthDao.ts
import { Injectable } from "@nestjs/common";
import { User } from "libs/api-interfaces/src/lib/api-interfaces";
import * as low from 'lowdb';
import * as FileSync from 'lowdb/adapters/FileSync';
export interface MaintenanceRequestDB extends User {
id: string;
name: string;
}
export interface MaintenanceRequestData {
users: MaintenanceRequestDB[];
}
const adapter = new FileSync<MaintenanceRequestDB>('./db/maint-requests.json')
const db = low(adapter)
db.defaults({ users: [] }).write();
@Injectable()
export class AuthDao {
private get collection(): any {
return db.get('users');
}
constructor(
) {
//
}
async getAdminUsers(user: User): Promise<MaintenanceRequestDB> {
const { username, password } = user;
const values = await this.collection.find({
username, password
}).value();
return values;
}
}
Auth.Dao.Spec.TS
import { Test } from "@nestjs/testing";
import { User } from "libs/api-interfaces/src/lib/api-interfaces";
import { AuthDao } from "./auth.dao";
describe('AuthService', () => {
let dao: AuthDao;
beforeAll(async () => {
const app = await Test.createTestingModule({
providers: [AuthDao],
}).compile();
dao = app.get<AuthDao>(AuthDao);
});
describe('getData', () => {
it('should return valid user', async () => {
const result = await dao.getAdminUsers(createUser("johndoe", "123456"));
expect(result).toEqual({username: 'johndoe'});
});
});
});
function createUser(username: string, password: string): User {
return ({
username: username,
password: password
})
}
此外,由于我几乎在每个测试中都使用 createUser 函数,我可以在哪里以及如何重构我的代码以便它可以与其他测试一起使用?
【问题讨论】:
标签: angular typescript unit-testing nestjs lowdb