javascript - Redux Saga 还没开始?
问题描述
我写了这些动作和传奇来倾听它们。
export async function addToWishlistApi(id: number) {
console.log("addToWishlistApi HELLO CAN ANYBODY HEAR ME");
const res = await axios.get(WishlistUrls.add(id));
console.log(res);
}
export function* addToWishlistSaga({ id }: { id: number }): Saga<void> {
console.log("addToWishlistSaga HELLO CAN ANYBODY HEAR ME");
try {
const res = yield call(addToWishlistApi, id);
console.log(res);
const wishlist = yield call(getCurrentWishlist);
console.log("WISHLIST", wishlist);
if (wishlist.contains(id))
yield put({ type: DealActionTypes.wishlistSuccess });
} catch (error) {
console.log("ERROR", error);
}
}
export async function getCurrentWishlist(): Promise<number[]> {
const res = await axios.get(WishlistUrls.getWishlist);
console.log(res.data.includes("WISHLIST-2.HTML"));
const $ = cheerio.load(res.data);
const tags = $(".button.yith-wcqv-button");
const idStrings: string[] = [];
tags.each((i, tag) => {
idStrings.push(tag.attribs["data-product_id"]);
});
const wishlist = idStrings.map(n => Number(n));
return wishlist;
}
export default function* wishlistSaga(): Saga<void> {
yield all([
yield takeEvery(DealActionTypes.addToWishlistStart, addToWishlistSaga),
yield takeEvery(
DealActionTypes.removeFromWishlistStart,
removeFromWishlistSaga
)
]);
}
我正在尝试测试recordSaga
import { runSaga } from "redux-saga";
export default async function recordSaga(saga, initialAction) {
const dispatched = [];
await runSaga(
{ dispatch: action => dispatched.push(action) },
saga,
initialAction
).done;
return dispatched;
}
这是我的测试:
describe("addToWishlistSaga", () => {
const startAction: Type.AddToWishlistStartAction = {
type: Types.addToWishlistStart,
id: deal.id
};
const successAction: Type.WishlistSuccessAction = {
type: Types.wishlistSuccess
};
const failureAction: Type.AddToWishlistFailureAction = {
type: Types.addToWishlistFailure,
id: deal.id
};
fit("dispatches a success action on success", async () => {
const dispatched = await recordSaga(wishlistSaga, startAction);
expect(dispatched).toContainEqual(successAction);
});
xit("dispatches a failure action on failure", async () => {
mock.onGet(WishlistUrls.add(deal.id)).networkErrorOnce();
const dispatched = await recordSaga(wishlistSaga, startAction);
expect(dispatched).toContainEqual(failureAction);
});
});
});
saga 设置和测试设置与我在其他项目中成功使用的相同,但由于某种原因addToWishlistSaga
从未运行过。没有任何绝望的日志语句被打印出来,并且dispatched
返回为空。
我在这里做错了什么?我的头快要爆炸了。
解决方案
推荐阅读
- java-8 - 使用 Java8 运行一个 JEE 应用程序,使用 Java 11 运行另一个
- python - 无法让地图出现在 Python 数据可视化中
- reactjs - 如何调试 API 调用(获取请求)?
- python - XGBClassifier 如何识别 scale_pos_weight 参数的正标签?
- java - ImportError:没有名为 amazonaws 的模块
- java - 如果在 Spring data jpa 中找到实体,有什么方法可以抛出异常?
- jsp - 从不同文件夹的 JSP 服务器下载大文件
- c++ - 多线程模板成员函数错误
- java - 从Java中的mime消息中提取正文
- javascript - 为什么 normalize() 方法在某些情况下不起作用?