web-dev-qa-db-fra.com

comment démocker une méthode à instance unique avec plaisanterie

venant de rspec, j'ai du mal à comprendre les moqueries avec plaisanterie. L'approche que j'essaie de faire est d'automocker le constructeur d'une classe et toutes ses fonctions, puis de les démocker une par une pour tester uniquement cette fonction. la seule documentation que je puisse trouver à ce sujet, est d'utiliser 2 classes, de se moquer d'une classe, puis de tester que ces fonctions sont appelées à partir de l'autre classe non moquée.

ci-dessous est une idée basique et artificielle de ce que j'essaie de faire. quelqu'un peut-il me diriger vers la plaisanterie de faire cela?

foo.js

class Foo
  constructor: ->
    this.bar()
    this.baz()
  bar: ->
    return 'bar'
  baz: ->
    return 'baz'

foo_test.js

// require the class
Foo = require('foo')

// mock entire Foo class methods
jest.mock('foo')

// unmock just the bar method
jest.unmock(Foo::bar)

// or by
Foo::bar.mockRestore()

// and should now be able to call
foo = new Foo
foo.bar() // 'bar'
foo.baz() // undefined (still mocked)

// i even tried unmocking the instance
foo = new Foo
jest.unmock(foo.bar)
foo.bar.mockRestore()
6
brewster

mockFn.mockRestore() a fonctionné pour moi avec [email protected]:

// Create a spy with a mock
const consoleInfoSpy = jest.spyOn(console, 'info').mockImplementation(() => {})

// Run test or whatever code which uses console.info
console.info('This bypasses the real console.info')

// Restore original console.info
consoleInfoSpy.mockRestore()
1
Nick Ribal