2016-08-15 4 views
3

Es ist notwendig, 1 reagierende Komponente, nur einfache Dummy-Mock, für Snapshot-Tests zu verspotten.Jest.mock äußere variable Referenz

Wenn ich versuche React.Componentinnerhalb die Mock-Funktion aufzurufen, ich habe einen Fehler:

The second argument of jest.mock() is not allowed to reference any outside variables.

Aber wenn ich require('react').Component nennen, das funktioniert! Gibt es irgendeine menschliche Art, es richtig zu machen?

Mein Code:

//This one fails 
import React from ('react'); 
... 
    jest.mock('...',() => { return class ... extends React.Component { 
      render(){ 
       return <span/> 
      } 

    }}); 

//This one works 
import React from ('react'); 
... 
jest.mock('...',() => { return class ... extends require('react').Component { 
      render(){ 
       return <span/> 
      } 

    }}); 

Antwort

1

Based on GitHub thread

This used to be a bug that we fixed. In a mock you can only require things locally and you aren't allowed to access external variables.

Sie Ihren Code auf diese Weise ändern kann, um es

jest.mock('...',() => { 
    const React = require ('react') 
    return class ... extends React.Component { 
    render() { 
     return <span /> 
    }  
    } 
}) 
+0

funktioniert aber wenn Sie eine Variable ändern möchten? Denken Sie, dass Sie eine Funktion vortäuschen wollen, die ein Objekt hat und zu Testzwecken in einem Test muss es wahr und andere falsch sein. Wie kann ich das jetzt machen? –

Verwandte Themen