我很难为我的烫伤工作进行单元测试。
我的工作需要一个包含三个字段的文件:
TextLine(args("input"))
.map('url -> ('fetchedUrl,'date,'info)){
...
我天真地期望这些字段被映射为一个 nTuple,而不需要任何进一步的设置。但从我的测试中,我了解到情况并非如此,需要建立一些进一步的合同:
JobTest[com.kohls.crawler.Miner]
.arg("input", "inputFile")
.arg("output", "outputFile")
.source(TextLine("inputFile"), List(("https://en.wikipedia.org/wiki/Test" ,"Mon Apr 14 15:08:11 CDT 2014", "extra info")))
.sink[(String,Date,Array[Byte])](Tsv("outputFile")){ ... }
目前这失败了cascading.tuple.FieldsResolverException: could not select fields: [{1}:'url'], from: [{2}:'offset', 'line']
。所以我想我需要以某种方式声明 TSV 字段,然后再将其作为 TextLine 的输入。
我发现的大多数文档在这方面都参差不齐。定义此测试的正确原因是什么?