我已经为此苦苦挣扎了。单元测试的新手。.我正在尝试模拟-
的单元测试用例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
也许我在这里缺少一些基础知识。我为此寻找了一种解决方案,但不幸的是,找不到适合我的解决方案。有人能帮忙吗?在此先感谢
我已经为此苦苦挣扎了。单元测试的新手。.我正在尝试模拟-fetchFooter(){client.items()。type('footer_link').depthParameter(10)...
mockReturnThis
是以下各项的快捷方式: