我无法理解为什么我的模拟对象对象常量不被接受为我的通用registerDataService方法调用的参数。
在此失败:
registerDataService(mockPG)
我回来的错误:
无法将绑定了嘲笑PG的registerDataService绑定到pgPool,因为对象文字1与属性查询的返回值的类型参数R [3]中的T [2]不兼容
这里的任何指针都很好。
我的代码
注册数据服务单元测试
const mockPG = {
query: (sql: string, args: Array<?string>) => new Promise((resolve)
=> {
resolve({
rows: [
{
usernameAvailable: false,
alternativeUserName: ['ray1', 'ray_22', 'ray_786']
}
]
});
}).then((res) => res)
};
}
registerDataService(mockPG) // **<-- error here with mockPG:**
RegisterDataService文件
type pgPoolType<T> = {
query: <T>(sql: string, args: Array<?string>) => Promise<T>
};
const validateNewUserNameAsync = (userName: string, pgPool: pgPoolType<pgPoolQueryResponse<row>>):
Promise<validateNewUserNameAsyncResponse> => {}
const registerUserAsync = (userDetails: ud, userStatusId: string, authUrl: string,
pgPool: pgPoolType<pgPoolQueryResponse<registernRow>>
): Promise<registerUserAsyncResponse> => { }
module.exports = (pgPool: pgPoolType<any>) => ({
validateNewUserNameAsync: (userName: string) => validateNewUserNameAsync(userName, pgPool)
registerUserAsync: (userDetails: ud, userStatusId: string, authUrl: string) =>
registerUserAsync(userDetails, userStatusId, authUrl, pgPool)
});
我设法使它起作用。
我在查询功能中犯了一个错误:
type pgPoolType<T> = {
query: <T>(sql: string, args: Array<?string>) => Promise<T>
};
通过删除查询函数开始处的t,因为我改用pgPoolType。
type pgPoolType<T> = {
query: (sql: string, args: Array<?string>) => Promise<T>
};