我有数十个Elm 0.17程序用于语言实验。每个脚本都包含简单的断言,程序会执行并运行所有的断言,程序将成功(处理退出代码0)或失败(处理退出代码不为0)。这里有一个例子:如何在Elm 0.18中进行命令行断言而无需elm-test?
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
。
但是我不想运行测试!我只想编写一些关于语言特性的断言。我已经用其他几十种语言完成了这项工作,我发现这是一种很好的学习方式。
那么,如何在Elm 0.18中创建一个程序,我可以运行elm make
或类似的程序,该程序从命令行运行并具有断言? (我知道榆树不适用于命令行程序,但在0.17中很容易做到,所以我怎么能在0.18中做类似的事情?
我建议你安装的elm-的早期版本测试v4添加了新的语法,但实际上只在测试版中,v3仍然可以在0.18版本下运行,并且具有你所需要的钩子nt –
谢谢,尽管我正在寻找的钩子类似于elm-test版本1.1,它具有带有函数runSuite:Test - > Program Never的模块ElmTest。我找不到任何函数,即使在elm-test 3.0.0中,也会产生一个'Program'对象。因此我无法从'main'运行测试。我错过了什么吗?有什么办法可以产生一个'Program'对象并仍然使用断言? –
哎呦 - 道歉 - 我是从记忆中写下来的,现在看它现在在v3中跑步排出了 –