我有几十个用于试验该语言的Elm 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
]
回到Elm 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
。
但我不是在尝试进行测试!我只想编写一些脚本来编写关于语言功能的断言。我用其他几种语言完成了这项工作,我发现这是一种很好的学习方式。
那么,在Elm 0.18中,我如何制作一个可以用elm make
或类似命令运行的程序,它从命令行运行并有断言? (我意识到Elm不适用于命令行程序,但这在0.17中很容易做到,所以我怎样才能在0.18中做类似的事情?
答案 0 :(得分:2)
您使用的是该库的旧版本。 runSuite,断言等来自1.0.0版本,当前版本是4.0.0 +。
我建议你阅读Upgrading guide from 0.17 to 0.18 和the docs for elm-community/elm-test latest
我希望它有所帮助。