2017-12-28 18 views
1

ich habe wenig Erfahrung mit Scherz, wie ich versuche, Variable in meiner Funktion zu ändern, wie wir zu erwarten haben Fehler ausgelöst, wenn die innere Variable Funktion (baseUrl)Jest Mock-Funktion die innere Variable und das Verhalten der Funktion ändern?

meine Funktion auf null geändert:

buildUrl Js

export function buildUrl(contentId, data, options = {}) { 
    let baseUrl = config.has('imgBaseUrl') && config.get('imgBaseUrl'); 
    if (!baseUrl) { 
    throw new Error('some error'); 
    } 
... 

ich brauche die baseUrl auf den Wert von null zum Beispiel zu verspotten und testen sie es

buildUrl.test.js

import {buildUrl} from "./buildURL"; 
.... 
it('throw an error when "baseUrl" is not configured',() => { 

    let mockBaseUrl = {baseUrl: null}; 
    jest.mock('./buildURL',()=> mockBaseUrl); 
    // jest.mock('../../../config/test',()=>mockImgBaseUrl); // or mock the config to be used by the function? 

    expect(()=> buildUrl('1.44444', data[0], defaultOptions)).toThrow(
    'some error' 
    ); 
    }); 

ein anderer Ansatz jest.fn() funktionierte nicht wie erwartet, vielleicht hier ich bin etwas fehlt ...

Antwort

0

Ich denke, dies zu tun:

jest.mock('./buildURL',() => {buildUrl: jest.fn()}) 

buildUrl.mockImplementation(() => {baseUrl: null}) 

Siehe Jest docs

+0

Sie Max danken. aber immer noch nicht funktioniert, ich erwäge, Mocha rewire verwenden, wenn es keine native rewire des Scherzes gibt –

Verwandte Themen