当前位置: 首页 > 知识库问答 >
问题:

nestjs typeorm中的getRepositoryToken是什么,何时使用?

南宫海超
2023-03-14

这里的文件如下:

当涉及到应用程序的单元测试时,我们通常希望避免建立数据库连接,保持测试套件的独立性并尽可能快地执行它们。但是我们的类可能依赖于从连接实例中提取的存储库。我们如何处理?解决方案是创建模拟存储库。为了实现这一点,我们建立了自定义提供者。每个注册的存储库都由存储库令牌自动表示,其中EntityName是实体类的名称。

@nestjs/typeorm包公开了getRepositoryToken()函数,该函数返回基于给定实体的准备好的令牌。

这到底是什么意思?自动完成文档只需给出签名,无需解释。

共有1个答案

袁晋鹏
2023-03-14

getRepositoryToken()是一个帮助器方法,它允许您获取与@InjectRepository()返回的注入令牌相同的注入令牌。这在测试中非常有用,这样您就可以定义一个自定义提供程序,该提供程序具有用于DI解析的匹配令牌,并且可以提供存储库方法的模拟,而无需实际与数据库对话。例如,如果你有

@Injectable()
export class FooService {
  constructor(@InjectRepository(Foo) private readonly fooRepo: Repository<Foo>) {}

}

在您的测试中,您可以添加提供者

{
  provide: getRepositoryToken(Foo),
  useValue: {
    find: jest.fn(),
    insert: jest.fn(),
  },
}

现在您已经为存储库提供了一个模拟的可注入提供者。

事情必须这样做的最大原因是因为打字稿不反映泛型类,它只反映存储库,如果Nest试图找出你想要注入的存储库,只有那个名字(存储库)很可能会弄错并注入错误的类。使用@InjectRepsitory()可以设置正确的注入令牌。

 类似资料:
  • 问题内容: 什么是a ,何时应该使用它?a 和a有什么区别? 问题答案: 如果没有其他对键对象的强引用,则弱哈希图中的元素可以由垃圾回收器回收,这使它们对于缓存/查找存储很有用。 弱引用不限于这些哈希表,您可以对单个对象使用WeakReference。它们对于节省资源很有用,您可以保留对某些内容的引用,但在没有其他引用的情况下允许对其进行收集。(顺便说一句,强引用是普通的Java引用)。还有一些弱

  • 问题内容: 作为React世界的初学者,我想深入了解我使用时会发生什么以及使用该情况的情况。以下代码段的意义是什么? 问题答案: “孩子”到底是什么? React文档说,您可以在代表“通用框”并且不提前知道其子级的组件上使用。对我来说,这并没有真正清除一切。我可以肯定的是,这个定义很合理,但对我而言却不是。 我对操作的简单解释是, 它用于在调用组件时显示在开始和结束标记之间包含的所有内容。 一个简

  • 问题内容: 前任) 我什么时候应该使用以下语句: 何时应该做: 问题答案: 的是,指示数据库,它应该保持锁在一排范围的提示。这意味着数据库将避免将锁升级到块或表范围。 当查询仅影响一行或只有几行时,可以使用提示来防止锁锁定不会被查询删除的行。这样一来,另一个查询就可以同时读取不相关的行,而不必等待删除完成。 如果在查询中使用它将删除很多行,则它可能会降低性能,因为数据库将尝试避免将锁升级到更大的范

  • 问题内容: 我在写简单的太阳系模拟器。这是我的第一个libgdx项目。我在主菜单中使用舞台和演员,非常方便,尤其是触摸事件处理。但是…看这些例子,我发现没有人在实际的游戏逻辑中使用演员。如果我应该使用actor作为行星类的父母,或者只是写我自己的类,我会徘徊。行星将不可触摸,它们只能在帧之间移动,因此动作MoveBy的第三个参数必须是帧之间的时间。那就是缺点。使用Actor有哪些优点? 问题答案:

  • 问题内容: 在JSF中,每个页面都有一个视图状态,该视图状态与Submit等来回传递。 我知道viewstate是使用页面上各种控件的状态计算得出的,您可以将其存储在客户端或服务器端。 问题是:如何使用此值?是否用于验证在提交时发送的值,以确保同一请求不会发送两次? 另外,它是如何计算的-我意识到Richfaces的计算方式可能与myfaces不同,但是有一个不错的主意。 谢谢。 问题答案: 问题

  • 这个豆子“状态”: 使用ajax“成功”回调通过网络发送: 这里需要注释@JsonProperty吗?使用它有什么好处?我想我可以删除这个注释而不会产生任何副作用。 正在阅读关于https://github.com/FasterXML/jackson-annotations/wiki/Jackson-Annotations我不知道什么时候需要用这个?