2016-05-08 10 views
0

Ich kann nicht toBeCalled() in meinem Jade-Test-Skript arbeiten.Kann nicht zuBeCalled() arbeiten in Jade Testskript

ich folgende Fehler msg erhalten, wenn der Jade-Test durchgeführt:

Error: toBeCalled() should be used on a mock function or a jasmine spy

Ich habe einen Anruf zu jest.unmock('../fooey') so nicht sicher, warum der Fehler erhalte ich?

fooey.js

var foo = function(phrase) { 
    return bar(phrase); 
} 

var bar = function(greeting) { 
    console.log(greeting + " Watz up?"); 
} 

foo("Hi Bob!"); 

module.exports.foo = foo; 

module.exports.bar = bar; 

fooey-test.js:

jest.unmock('../fooey'); // unmock to use the actual implementation. 

describe('fooey()',() => { 

    const foo = require('../fooey').foo; 
    const bar = require('../fooey').bar; 

    it('bar() is called.',() => { 

     foo("Hi Bob!"); 

     expect(bar).toBeCalled(); 
    }); 
}); 
+0

Ich war nach dem Jest Tutorial, in dem sie nennen 'jest.unmock (‘ ../ fetchCurrentUser.js'); '. https://facebook.github.io/jest/docs/tutorial.html#content –

+0

Nachdem ich mich in Jest über Mocks informiert habe, glaube ich nicht, dass ich das brauche. Ich möchte 'foo()' nennen und Jest sagen lassen, ob bar '()' innerhalb von 'foo()' aufgerufen wurde. –

+0

Ich habe dies funktioniert mit spyOn(), obwohl ich foo() und bar() in einem Wrapper func() umwickeln musste, um nach spyOn() API arbeiten die Spionage-Funktion innerhalb des gleichen Objekts zu sein. d. h. 'spyOn (fooey, 'bar'); fooey.foo ("Hallo Bob!"); expect (fooey.bar) .toHaveBeenCalledWith ("Hallo Bob!"); '' ' Frage 1) gibt es eine bessere Möglichkeit, dies mit Jest API zu tun, 2) kann ich dies tun, ohne meinen Code in eine Verpackung. –

Antwort

0

Ich habe es sowohl mit einem Mock von bar Arbeits() und auch spyOn() ... mit

fooey.js

var Fooey = function() { 
    // var self = this; 

    this.foo = function(phrase) { 
     // var result = self.bar(phrase); 
     var result = this.bar(phrase); 

     return result; 
     // return "Junky." 
    }; 

    this.bar = function(greeting) { 
     var result = greeting + " Watz up?" 

     console.log(result); 

     return result; 
    }; 
}; 


module.exports = Fooey; 

fooey-test.js

jest.unmock('../fooey'); // unmock to use the actual implementation. 

describe('fooey()',() => { 

    const Fooey = require('../fooey'); 
    const fooey = new Fooey(); 

    it('mock: bar() is called.',() => { 

     var myFooey = { 
     foo: fooey.foo, 
     bar: jest.genMockFunction()   
     }; 

     myFooey.foo("Hello"); 

     expect(myFooey.bar).toBeCalledWith("Hello"); 
    }); 

    it('bar() is called with "Hi Bob!".',() => { 

     spyOn(fooey, 'bar'); 

     fooey.foo("Hi Bob!"); 

     expect(fooey.bar).toHaveBeenCalledWith("Hi Bob!"); 
    }); 
});