测试中的NestJS全局模块

时间:2019-03-15 02:41:08

标签: javascript node.js typescript nestjs

是否可以将所有import pygame import sys length = 1200 width = 800 screen = pygame.display.set_mode((length, width)) screen_rect = screen.get_rect() ball = pygame.image.load('ball.bmp') ball_rect = ball.get_rect() ball_rect.y = ball_rect.width ball_rect.x = screen_rect.centerx while True: screen.fill((255, 255, 103)) for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() elif event.type == pygame.KEYDOWN: if event.key == pygame.K_RIGHT: ball_rect.y += 15 screen.blit(ball, ball_rect) pygame.display.flip() 个模块自动提供到import pygame import sys length = 1200 width = 800 screen = pygame.display.set_mode((length, width)) screen_rect = screen.get_rect() screen.fill((255, 255, 103)) ball = pygame.image.load('ball.bmp') ball_rect = ball.get_rect() ball_rect.y = ball_rect.width ball_rect.x = screen_rect.centerx while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() elif event.type == pygame.KEYDOWN: if event.key == pygame.K_RIGHT: ball_rect.y += 15 screen.blit(ball, ball_rect) pygame.display.flip() 中? (即,无需导入它们,主应用程序的工作方式相同)

到目前为止,我必须确保将所有全局模块插入到我的通话的@Global列表中:

TestModule

1 个答案:

答案 0 :(得分:1)

全局模块始终必须导入一次,其提供程序才能全局可用。这对于测试主应用程序都是适用的,请参见docs

  

全局模块最多只能注册一次,   根或核心模块。之后,CatsService提供者将是   普遍存在,尽管不会导入CatsModule

因此,无法导入它们。您可以通过创建导入所有全局模块的CommonsModule使其变得更容易。然后,您可以导入CommonsModule而不是AppModule和测试中的每个模块。

但是请注意,具有很多全局依赖项是一种代码味道。另外,在单元测试中,您通常希望独立于任何其他依赖项来测试类。如果导入全局模块,则将针对实际的提供程序进行测试。

  

将一切都全球化是一个不明智的决定。全局模块   可用于减少所需样板的数量。的   导入数组仍然是制作模块API的最佳方法   透明的。