我有几十个榆树0.17程序来试验这种语言。每个脚本都具有简单的断言,程序将执行并运行所有断言,程序将成功(进程退出代码0)或失败(进程退出代码不是0)。下面是一个示例:
module Main exposing (..)
import ElmTest exposing (runSuite, suite, defaultTest, assertEqual)
import List exposing (map)
boss = { name = "Alice", salary = 200000 }
worker = { name = "Bob", salary = 50000, supervisor = boss }
newWorker = { worker | name = "Carol" }
payrollTax : { a | salary : Float } -> Float
payrollTax { salary } = salary * 0.15
main = runSuite <| suite "Exploring records" <| map defaultTest
[ assertEqual "Alice" (.name boss)
, assertEqual boss worker.supervisor
, assertEqual 7500.0 (payrollTax worker)
, assertEqual boss newWorker.supervisor
]回到榆树0.17,我就跑
$ elm make records.elm --output tests.js && node tests.js太好了,我要看看测试是否有效!
我最终决定运行elm upgrade以获得0.18,现在(并不令人惊讶)所有这些东西都坏了。显然,elm-test的整个概念现在已经完全改变了!当然,elm upgrade在更新我的elm-package.json方面做得很好
"dependencies": {
"elm-community/elm-test": "4.0.0 <= v < 5.0.0",但是新的模块不再有ElmTest、runSuite和朋友了。我已经阅读了这些文档,并看到我们现在有了Test、Expect和Fuzz,这很好。但现在看来我们应该
elm test init然后
elm test来发现和运行所有的测试。我认为,我们现在不用用main编写应用程序,而是将测试作为暴露Test对象的模块放在测试目录中。然后我们运行elm test。
但我不是在试着做测试!我只想写一些关于语言特性的断言的脚本。我用其他几十种语言做过这件事,我觉得这是一个很好的学习方法。
那么,在ELM0.18中,我如何制作一个可以用elm make或类似的程序运行的程序,该程序从命令行运行并具有断言?(我知道Elm并不适用于命令行程序,但这在0.17中很容易做到,那么我如何在0.18中做类似的事情呢?
发布于 2017-05-30 08:53:06
https://stackoverflow.com/questions/44222096
复制相似问题