在 F#(和大多数函数式语言)中,一些代码非常短,如下所示:
let f = getNames
>> Observable.flatmap ObservableJson.jsonArrayToObservableObjects<string>
或者 :
let jsonArrayToObservableObjects<'t> =
JsonConvert.DeserializeObject<'t[]>
>> Observable.ToObservable
我最终为后一个功能做的最简单的基于属性的测试是:
testList "ObservableJson" [
testProperty "Should convert an Observable of `json` array to Observable of single F# objects" <| fun _ ->
//--Arrange--
let (array , json) = createAJsonArrayOfString stringArray
//--Act--
let actual = jsonArray
|> ObservableJson.jsonArrayToObservableObjects<string>
|> Observable.ToArray
|> Observable.Wait
//--Assert--
Expect.sequenceEqual actual sArray
]
不管排列部分,测试比被测函数多,所以比被测函数更难阅读!
- 当它比生产代码更难阅读时,测试的价值是什么?
另一方面:
- 我想知道由多个功能组合而成的功能是否可以安全地不被测试?
- 是否应该在集成和接受级别进行测试?
- 如果他们很短但执行复杂的操作怎么办?