【发布时间】:2020-10-01 00:33:57
【问题描述】:
我已经为此苦苦挣扎了一段时间。单元测试新手.. 我正在尝试模拟单元测试用例 -
fetchFooter() {
client.items().type('footer_link')
.depthParameter(10)
.toObservable()
.subscribe((response) => {
this.setState({
resFooter: response.items,
resFooterLinked: response.linkedItems,
});
});
}
客户在哪里
import { DeliveryClient } from '@kentico/kontent-delivery';
const client = new DeliveryClient({
projectId: <projectKey>,
enableAdvancedLogging: false,
});
这是我到目前为止写的,但似乎不起作用。
const sample = {
items: {},
linkedItems: {}
};//this is my response object
describe("testing client", () => {
const mockClient = {
items: jest.fn().mockReturnThis(),
type: jest.fn().mockReturnThis(),
depthParameter: jest.fn().mockReturnThis(),
toObservable: jest.fn().mockReturnThis(),
subscribe: jest.fn().mockReturnThis(),
};
const mockProps = {
client: mockClient,
};
const component = mount(
<Footer mockProps={mockProps} resFooter={true} resFooterLinked={true} />
);
describe("Component", () => {
describe("#componentDidMount", () => {
it("should mount the component and set state correctly", () => {
const mockedResponse = sample;
mockClient.subscribe.mockImplementationOnce((handler) => handler(sample));
// tslint:disable-next-line: no-string-literal
component["setState"] = jest.fn();
component.instance().fetchFooter();
expect(
mockClient.items().type().depthParameter().toObservable().subscribe
).toBeCalledWith("footer_link");
// tslint:disable-next-line: no-string-literal
expect(component["setState"]).toBeCalledWith(sample);
});
});
});
});
我收到一个错误 -
expect(jest.fn()).toBeCalledWith(...expected)
Expected: "footer_link"
Number of calls: 0
也许我在这里缺少一些基础知识。我为此寻找解决方案,但不幸的是没有找到适合我的解决方案。 有人能帮忙吗?提前致谢
【问题讨论】:
标签: reactjs ecmascript-6 jestjs enzyme kentico