2015-09-07 13 views
5

Chcę przetestować jednego JS, który używa jednej trzeciej biblioteki do pobierania danych, więc używam żartu, próbuję tej implementacji. Działa, gdy zadzwonię do niego bezpośrednio w teście. Jednak nie działa, gdy jest używany w kodzie źródłowym.jest mockowa implementacja nie działa z wymaganiem ('')

Oto kod

//Source implementation 

var reference = require('./reference'); 

module.exports = { 
    getResult: function() { 
    return reference.result(); 
    } 
}; 


//Test code 

jest.dontMock('./foo'); 
jest.dontMock('console'); 

describe('descirbe', function() { 
    var foo = require('./foo'); 

    it('should ', function() { 
    var reference = require('./reference'); 

    reference.result.mockImplementation(function (a, b, c) { 
     return '123' 
    }); 

    console.log(foo.getResult()); // undefined 
    console.log(reference.result()); // 123 
    }); 

}); 

Odpowiedz

2

Twój porządek wymaga, są w błędzie. Jeśli potrzebujesz ./foo przed skonfigurowaniem próbnym reference, wówczas foo s reference będzie niezdefiniowane, jak na Automatyzacja jest Jest.

jest.dontMock('./foo');                                                     

describe('descirbe', function() {                                                   
    it('should ', function() {                                                    
     var reference = require('./reference');                                                
     reference.result.mockImplementation(function (a, b, c) { 
      return '123'; 
     });                                                
     var foo = require('./foo');                                                   

     console.log('ferr', foo.getResult()); // ferr 123                                                 
    });                                                          
}); 
2

Linia

var foo = require('./foo');

zostanie oceniona w describe i przechowywane w foo.

Następnie, w bloku it kpisz sobie z tego, ale nie odnosi się to do starego odniesienia foo.

Umieszczenie foo po wywołaniu mockImplementation naprawi błąd.

//Test code 

jest.dontMock('./foo'); 
jest.dontMock('console'); 


describe('describe', function() { 

    it('should ', function() { 
    var reference = require('./reference'); 

    reference.result.mockImplementation(function (a, b, c) { 
     return '123' 
    }); 
    var foo = require('./foo'); 

    console.log(foo.getResult()); // undefined 
    console.log(reference.result()); // 123 
    }); 

}); 
Powiązane problemy