如何对使用依赖项的FP功能进行单元测试

鲍比T.

试图了解函数式程序员如何在没有依赖项注入的情况下对具有依赖项的函数进行单元测试。为了使用模拟进行单元测试,您可以通过方法签名或通过类似构造函数/构造函数的机制来提供依赖项。

因此,如果您具有如下功能组合:

a -> b -> c -> d

如果您在d谈论某种依赖性,如何a进行单元测试?无论依赖关系保存在哪里,我都希望对其进行单元测试。我想知道函数式程序员采用什么方法。

理通

您可以通过适当的单元测试代码depenent作用域嘲弄依赖注入让我告诉你我的意思。

const square = x => x ** 2

const isOdd = x => x % 2 === 1

const addDependentValue = dependency => x => x + dependency.value

const mockDependency = { value: 5 }

it('filters out evens, squares, and adds value from dependency', () => {
  const output = pipe([
    filter(isOdd),
    map(square),
    map(addDependentValue(mockDependency)),
  ])([1, 2, 3, 4, 5])
  assert.deepEqual(output, [6, 14, 30]) // OK
})

我们确定了函数的作用域,addDependentValue以便返回值可以“看到”依赖关系(它在作用域内)。在测试中,我们使用嘲笑了我们的依赖关系mockDependency这将使我们能够在测试中得出可预测的结果。在一个不太人为的示例中,您的模拟应镜像您要模拟的任何依赖项的接口。最后,我们注入mockDependency在我们的测试,使我们能够合理地测试这个管道。

如何对单元进行测试?

a 是纯的,所以您可以为此编写一个简单的单元测试

// if a is square
it('squares', () => {
  assert.strictEqual(square(3), 9) // OK
})

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何对使用Popen的功能进行单元测试?

如何对使用类型提示的功能进行单元测试

如何对使用其他经过单元测试的功能进行单元测试?

如何使用http作为依赖项进行单元测试

如何正确使用大量依赖项进行单元测试

如何对未导出的功能进行单元测试?

如何对异步功能进行适当的单元测试?

如何对作为viewchild的功能进行单元测试

如何对模块中的功能进行单元测试?

如何对装饰功能进行单元测试?

如何对Kotlin挂起功能进行单元测试

如何通过静态调用对功能进行单元测试

如何对搜索功能进行单元测试?

如何对该功能进行单元测试

如何对需要HTTP请求的功能进行单元测试?

使用两个功能进行单元测试

使用Spring的DomainClassConverter功能进行单元测试

使用反应/酶对输出功能进行单元测试

如何使用CMake对库(TDD)的私有功能进行单元测试

如何使用JEST在React App中对功能进行单元测试

如何在AngularJS中使用$ http.jsonp对功能进行单元测试?

Kotlin:对以功能为参数的功能进行单元测试

对使用getBean(“ myService”)的依赖项进行类的单元测试

我应该如何对具有许多子功能的功能进行单元测试?

如何在CI管道中使用不属于git remote的模型文件的功能进行单元测试?

如何使用 google test 对 gRPC 异步 C++ 客户端功能进行单元测试

不确定如何对使用bCrypt.compare()的密码验证功能进行单元测试,不确定

如何通过多个输入调用对功能进行单元测试的效率如何?

如何使用mocha.js模拟依赖项类进行单元测试?