2017-08-18 15 views
7

BenHer testte jest alay işlevi dönüş değeri nasıl değiştirilir?

jest.mock('../../../magic/index',() => ({ 
    navigationEnabled:() => true, 
    guidanceEnabled:() => true 
    })); 

bu işlevler gizlemek ve bazı özel özelliğini göstermek için bileşenin işlevini hale haber verilecek benim bileşen testi dosyasında böyle bir aldatma modülü var.

Bu sahte işlevlerin dönüş değeri farklı kombinasyonlarında anlık görüntü almak istiyorum.

varsayalım için ben öyleyim çünkü fonksiyonları bu dinamik

jest.mock('../../../magic/index',() => ({ 
    navigationEnabled:() => false, 
    guidanceEnabled:() => false 
    })); 

gibi false değerleri döndürmek sahte modülünü değiştirmek istediğiniz bu test durumda çalıştırmak için bu

it('RowListItem should not render navigation and guidance options',() => { 
    const wrapper = shallow(
     <RowListItem type="regularList" {...props} /> 
    ); 
    expect(enzymeToJson(wrapper)).toMatchSnapshot(); 
    }); 

gibi bir deneme sürecindeyiz zaten bir kez RowListItem bileşenini içe aktarıyorum, böylece benim sahte modülüm tekrar içe aktarmayacak. bu yüzden değişmeyecek. Bunu Nasıl Çözebilirim ?

cevap

8

Bunu casusları döndürür şekilde modülü alay ve testinizden aktarabilirsiniz: Eğer mockImplementation

navigationEnabled.mockImplementation(()=> true) 
//or 
navigationEnabled.mockReturnValueOnce(true); 

kullanarak gerçek uygulama değiştirebilir daha sonra

import {navigationEnabled, guidanceEnabled} from '../../../magic/index' 

jest.mock('../../../magic/index',() => ({ 
    navigationEnabled: jest.fn(), 
    guidanceEnabled: jest.fn() 
})); 

Ardından bir sonraki testte

navigationEnabled.mockImplementation(()=> false) 
//or 
navigationEnabled.mockReturnValueOnce(false); 
2

Ne yapmak isterseniz

import { navigationEnabled, guidanceEnabled } from '../../../magic/index'; 

jest.mock('../../../magic/index',() => ({ 
    navigationEnabled: jest.fn(), 
    guidanceEnabled: jest.fn() 
})); 

descrive('test suite',() => { 
    it('every test',() => { 
    navigationEnabled.mockReturnValueOnce(value); 
    guidanceEnabled.mockReturnValueOnce(value); 
    }); 
}); 

sen =>https://facebook.github.io/jest/docs/mock-functions.html#mock-return-values

burada bu işlevler hakkında daha fazla bakabilirsiniz