【问题标题】:How to reassign value from mockStore.overrideSelector()?如何从 mockStore.overrideSelector() 重新分配值?
【发布时间】:2021-08-23 21:28:24
【问题描述】:

我有一个返回布尔值的选择器。对于我的单元测试,我需要测试这个值是真还是假。

默认情况下,在测试设置中,我有以下内容:

mockStore.overrideSelector(someSelector, true);

我需要将选择器的值更改为 false,但是当我尝试以下操作时:

mockStore.resetSelectors();
mockStore.overrideSelector(someSelector, false);
mockStore.refreshState();
spectator.detectChanges();

选择器仍然返回 true。

如何重新分配之前通过 overrideSelector 方法设置的值?

【问题讨论】:

    标签: angular unit-testing ngrx


    【解决方案1】:

    正如官方文档中提到的Ngrx Testing

    要更新模拟选择器以返回不同的值,请使用 MemoizedSelector 的 setResult() 方法。更新选择器的模拟值不会导致它自动发出。要触发所有选择器的发射,请在更新所需的选择器后使用 MockStore.refreshState() 方法。

    所以这样的事情应该可以工作......

    const mockSelector = mockStore.overrideSelector(someSelector, true);
    ...
    ...
    mockSelector.setResult(false);
    mockStore.refreshState();
    

    【讨论】:

      猜你喜欢
      • 2011-02-05
      • 1970-01-01
      • 2018-04-18
      • 1970-01-01
      • 1970-01-01
      • 2016-10-14
      • 2016-03-11
      • 2011-06-24
      • 1970-01-01
      相关资源
      最近更新 更多