Вариант использования:
- У меня есть модуль функций, каждая функция проверяется модулем
- У меня есть фабричная функция, которая создает поток этих функций, который сторонняя библиотекаТребуется.
- Я хотел бы проверить, что эта фабричная функция производит правильный поток.Используя
@cycle/Time
, я могу создать поток и утверждать его. - Я могу утверждать, что функции отображаются в потоке в правильном порядке.
- Однако яЯ не могу утверждать на любой функции, которая карри.Как можно утверждать о каррированных функциях?
- В настоящее время у меня есть хак для
JSON.stringify
функций и утверждения их источника.
Чтобы упростить проблему, я создалпростой набор тестов, поэтому нам не нужно использовать @cycle/Time
.Похоже, что карри функции являются новыми экземплярами функции.Пожалуйста, смотрите код ниже.
Мне было интересно, как я смогу пройти неудачный тест?В этом случае я моделирую функцию карри с помощью bind
.Это возможно?
const a = () => b
const b = () => {}
const c = (arg) => b.bind(null, arg)
const d = () => () => {}
describe("curried function test", function() {
it('should return a reference to b', () => {
expect(a()).toBe(b)
})
// This test fails because b.bind returns a new function.
it('should return a reference to a curried b', () => {
expect(c('foo')).toBe(b)
})
it('should create a new instance everytime', () => {
expect(d()).not.toBe(d())
})
});
Я установил jsfiddle здесь .