【问题标题】:Angular Routing Component TestingAngular 路由组件测试
【发布时间】:2021-07-30 11:32:56
【问题描述】:

我正在阅读来自here 的角度路由测试的官方示例。我不明白heroClick() 是如何触发点击的。

it('should tell ROUTER to navigate when hero clicked', () => {
  heroClick(); <------- how does this work !?  // trigger click on first inner <div class="hero">

  // args passed to router.navigateByUrl() spy
  const spy = router.navigateByUrl as jasmine.Spy;
  const navArgs = spy.calls.first().args[0];

  // expecting to navigate to id of the component's first hero
  const id = comp.heroes[0].id;
  expect(navArgs).toBe('/heroes/' + id, 'should nav to HeroDetail for first hero');
});

这是 stackblitz 示例的link

【问题讨论】:

    标签: jasmine angular-test


    【解决方案1】:

    heroClick 是第 84 行中传递给 tests() 函数的参数。它是一个不接受任何参数且不返回任何内容的函数。在第 120 行,heroClick() 调用传递给 tests() 的任何内容。

    在第 27 行和第 48 行调用 tests(),传递不同的函数 clickForShallowclickForDeep,在它们的用法下方定义。这些函数通过与组件中的元素交互来模拟点击。

    【讨论】:

    • 您的意思是传递不带参数且不返回任何内容的函数会触发点击吗?
    • 不,传递一个函数就像传递任何其他值一样。但是第 120 行调用了作为参数传递的函数。我已经编辑了答案以澄清这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 2022-06-23
    • 2017-02-18
    相关资源
    最近更新 更多