Как шпионить за машинописным классом, используя жасмин? - PullRequest
0 голосов
/ 30 октября 2019

У меня есть класс, который вызывает backend для получения данных, поэтому в приведенном ниже коде я попытался написать модульный тест для класса, чтобы смоделировать его с помощью spyOn, чтобы я мог получить желаемый результат, но не удается импортировать классЛюбое представление о том, как методы класса spyOn с помощью jasmine?

В основном пытается spyOn на core метод и базовые вызовы.

DrugPriceApi.ts

export class DrugPriceApi extends Types.ModuleBase < DrugPriceParam, DrugPriceResultSet[] > {

    private _memberId: string = "";
    private _dependencies: any;
    private errorMessage: string = "There was an issue while retrieving drug price. Please try again.";

    before(args: DrugPriceParam): Promise < DrugPriceParam > {
        args.daysSupply = args.daysSupply ? args.daysSupply : args.appName === "VOYA" ? "90" : "BLNK";
        return Promise.resolve(args);
    }

    core(args: DrugPriceParam, requestMethod: Interface.Core.RequestMethod, _dependencies: any): Promise < any > {
        this._dependencies = _dependencies;

        return new Promise < any > ((resolve: Function, reject: Function) => {
               this.getDrug(function(resolve){ resolve( //response here);});
                }
            }

        }
    }
}

DrugPriceApi.spec.ts

import { Interface } from "dist/karma/core-sdk-lib/src/ts/interface/index";
import { } from 'jasmine';
import { Index } from "../../../../../index";
import { setup } from "dist/karma/core-sdk-lib/src/ts/helper/TestSetup.helper";
import { CApiSettings, CLogger } from "@cvsdigital_specialty/common-utils";
import { DrugPriceParam } from "./DrugPriceApi.interface";
import {DrugPriceApi} from "./DrugPriceApi.node";
    describe("Module", () => {
        let _sdkInstance: any;
        let param = {
            tokenId: '123',
            appName: 'CMK_TEST',
            refId: '123'
        } as DrugPriceParam;

        let memberInfo: any = {};
        memberInfo.dateOfBirth = "11/11/11";
        memberInfo.externalID = "6172";
        memberInfo.internalID = "12";
        memberInfo.clientId = "22322";
        memberInfo.planId = "902H93";
        memberInfo.eligibility = {
            "benefitPlanList": {
                "benefitPlan": [
                    {
                        "active": true,
                        "deliverySystem": 2,
                    },
                    {
                        "active": true,
                        "deliverySystem": 3,
                    }
                ]
            }
        };
        param.memberInfo = memberInfo;
        beforeEach(() => {
            spyOn(DrugPriceApi, 'core' as any).and.returnValue(1); // 'as any' prevents compiler warning
          });

          it('verifies that core was called', () => {
            const module = DrugPriceApi.core(param);
          });

    });
...