Насмешка над обещанием, возвращающим метод из того же класса - PullRequest
0 голосов
/ 30 мая 2018

Я хочу смоделировать / заглушить разрешение метода класса, который возвращает обещание при тестировании другого метода того же класса.Я использую jest.

У меня есть следующий класс Blah, из которого я хочу протестировать метод foo():

export default class Blah {
  foo () {
    this.bar().then(result => {
      // some logic here
    })
  }

  bar () {
    return new Promise(function (resolve, reject) {
      // fetches some stuff over the network
      resolve('hello world')
    })
  }
}

Поскольку foo() использует bar() - метод возврата обещаний, который работает по сети - я хотел бы посмеяться над решением bar();допустим, чтобы он разрешился what up.

Допустим, тест будет выглядеть примерно так:

import Blah from './blah'

test('foo() - bar() resolves "what up"', () => {
  const blah = new Blah()
  // mock blah.bar() so that is resolves "what up"

  // {some assertions on blah.foo() here}
})

Я впервые работаю с jest, и я прочиталдокументы, но мне все еще трудно обернуть голову вокруг этого случая.

Как я могу высмеивать разрешенное значение bar() во время тестирования foo()?

1 Ответ

0 голосов
/ 30 мая 2018

Все еще только JavaScript означает, что любое свойство объекта может быть динамически перезаписано:

// in the test file
const blah = new Blah();
blah.bar = _ => Promise.resolve("what up");

// now some assertions about blah.foo
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...