Как заглушить класс с помощью фреймворка Jest? - PullRequest
0 голосов
/ 04 октября 2018

Я пытался создать класс-заглушку для своего класса, но я не уверен, что это правильный подход, и если кто-то может помочь, будет полезна любая помощь.class.ts

export class CacheController {
    public static getInstance(): CacheController {
        if (!CacheController.instance) {
            CacheController.instance = new CacheController();
        }
        return CacheController.instance;
    }

    private static instance: CacheController;
    private cache: CCache;

    private constructor() {
        this.cache = new CCacheFactory().getCachingObject("redis");
    }

    public async saveDetails(reqDetails: IGetCacheRequest): Promise < ICacheResponse > {

    }
}

class.spec.ts

describe("Testing the Cache Controller", () => {
    let stubbedCacheWrapper;
    let mod;
    let result;

    const response = {
        key: "5c70bec10f664215b30538636ed9a6154104a8de5faf4ea39d376fb5010d397c";
    };
    beforeEach(function() {
        mod = CacheController.getInstance();
        stubbedCacheWrapper = sandbox.createStubInstance(CacheController.getInstance());
        stubbedCacheWrapper.getInstance().saveDetails().callsFake(function() {
            // return Promise.resolve(successESLresponse);
            return new Promise < any > ((resolve) => {
                resolve(response);
            });
        });
    });
    describe('setValues() called first time', function() {
        const saveDetails = {}
        as ICacheRequest;
        saveDetails.cacheobject = {
            test: "test data"
        };
        saveDetails.cachetype = "TADCache";
        beforeEach(() => {
            result = mod.saveDetails(saveDetails, stubbedCacheWrapper);
        });
        it("should call call cache.setValue)", () => {
            sinon.assert.calledOnce(stubbedCacheWrapper.saveDetails());
        });
    });

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...