测试中的Angular Ngrx单元测试分派操作不起作用

问题描述

我有一个从api加载一些数据的组件,但是我只需要一次这些数据,因此我不使用reducer和selector。 我只在api调用中使用动作和效果

那是我要测试的代码:

this.model.aggregate([
  {
    $match: {
      participants: userId,},{ $sort: { last_activity: -1 } },{ $limit: 10 },{
    $lookup: {
      from: "chats",let: { cid: "$_id" },pipeline: [
        {
          $match: {
            $expr: {
              $eq: ["$conversation_id",{ $toString: "$$cid" }],{ $sort: { date: -1 } },{ $limit: 1 },],as: "last_message",]);`

我的测试如下:

private loadData() {
    const subscriptions: Subscription = new Subscription();
    subscriptions.add(
      this.actions$
        .pipe(ofType(EApiActions.ApiLoaded))
        .subscribe((action: ApiLoaded) => {
          subscriptions.unsubscribe();
          this.data = action.result;
        })
    );
    subscriptions.add(
      this.actions$
        .pipe(ofType(EApiActions.ApiFailure))
        .subscribe((action: ApiFailure) => {
          subscriptions.unsubscribe();
        })
    );
    this.store.dispatch(
      new ApiRequest()
    );
  }

测试一直进行到这一行期望(dispatchSpy).toHaveBeenCalledWith(expectedAction);

如您所见,该组件侦听EApiActions.ApiLoaded,所以我尝试使用模拟存储.dispatch(new ApiLoaded([]))调度动作。但什么也没发生,我组件中的代码没有执行

我该如何解决? 这是我使用动作和效果的有效方法吗?还是您认为我应该总是遍历将结果保存到商店的reducer,然后再使用选择器访问它?

解决方法

AndreiGătej给了我提示。谢谢

这是工作测试:

    public func paymentQueue(_ queue: SKPaymentQueue,updatedTransactions transactions: [SKPaymentTransaction]) {
        
        for transaction in transactions {
            DispatchQueue.main.async {
                switch transaction.transactionState {
                    
                case .purchased:
                    SKPaymentQueue.default().finishTransaction(transaction)
                    
                case .restored:
                    SKPaymentQueue.default().finishTransaction(transaction)
                    
                case .failed:
                    SKPaymentQueue.default().finishTransaction(transaction)
                    
                default:
                    break
                }
            }
        }
    
    }

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...