如何测试这个特定的选择器?
How to test this specific selector?
我正在测试我的 NgRx 代码,在我的选择器上我有两个选择器:
export const selectSlice = (state: AppState) => state.slice;
export const selectErrors = createSelector(
selectSlice,
state => state.errors
);
我可以很容易地用投影仪测试 selectErrors,但我无法测试第一个,它在 Instanbul 上始终保持为 "function uncovered"。我尝试了以下方法:
it('should return call to selectSlice', () => {
const selector = selectors.selectSlice;
store.select(selector);
expect(store.select).toHaveBeenCalledWith(selector);
});
我该如何测试它?
编辑:这是我对错误选择器的测试:
it('should return call to selectErrors', () => {
const selector = selectors.selectErrors;
store.select(selector);
expect(store.select).toHaveBeenCalledWith(selector);
expect(
selector.projector({
errors: [
{
message: 'Mock error'
}
]
}).length
).toEqual(1);
});
该函数未被覆盖,因为您正在使用选择器的 projector
函数,该函数跳过执行选择器而仅运行投影仪函数。
要获得它的代码覆盖率,您应该:
- 不要使用
projector
函数,因为它是一个相当简单的选择器
- 或者如下为其编写测试(因为选择器只是一个函数,您可以调用它并测试输出):
expect(selectSlice({ slice: 'foo'})).toEqual('foo')
就我个人而言,我认为编写这些测试没有任何附加价值,而且这些测试可能很耗时 - 请参阅我的文章 How I test my NgRx selectors 了解更多信息。
我正在测试我的 NgRx 代码,在我的选择器上我有两个选择器:
export const selectSlice = (state: AppState) => state.slice;
export const selectErrors = createSelector(
selectSlice,
state => state.errors
);
我可以很容易地用投影仪测试 selectErrors,但我无法测试第一个,它在 Instanbul 上始终保持为 "function uncovered"。我尝试了以下方法:
it('should return call to selectSlice', () => {
const selector = selectors.selectSlice;
store.select(selector);
expect(store.select).toHaveBeenCalledWith(selector);
});
我该如何测试它?
编辑:这是我对错误选择器的测试:
it('should return call to selectErrors', () => {
const selector = selectors.selectErrors;
store.select(selector);
expect(store.select).toHaveBeenCalledWith(selector);
expect(
selector.projector({
errors: [
{
message: 'Mock error'
}
]
}).length
).toEqual(1);
});
该函数未被覆盖,因为您正在使用选择器的 projector
函数,该函数跳过执行选择器而仅运行投影仪函数。
要获得它的代码覆盖率,您应该:
- 不要使用
projector
函数,因为它是一个相当简单的选择器 - 或者如下为其编写测试(因为选择器只是一个函数,您可以调用它并测试输出):
expect(selectSlice({ slice: 'foo'})).toEqual('foo')
就我个人而言,我认为编写这些测试没有任何附加价值,而且这些测试可能很耗时 - 请参阅我的文章 How I test my NgRx selectors 了解更多信息。