有人可以告诉我“碎片评估错误”的含义,或者我可能在哪里寻找解决方案?我有时(但不总是)得到很多这些错误(不改变我的代码):
[error] ! Fragment evaluation error
[error] ThrowableException: Could not initialize class code.model.Post$ (FutureTask.java:138)
[error] code.model.PostSpec$$anonfun$1$$anonfun$apply$1.apply$mcZ$sp(PostSpec.scala:68)
[error] code.model.PostSpec$$anonfun$1$$anonfun$apply$1.apply(PostSpec.scala:51)
[error] code.model.PostSpec$$anonfun$1$$anonfun$apply$1.apply(PostSpec.scala:51)
PostSpec的第68行是(specs2)测试中引用Post模型伴随对象的第一行:
val test4 = Post.fixJValue(toextract4).extract[Selection]
我正在使用Scala 2.9.0-1。
另外:我不知道它是否重要,但Post是net.liftweb.mongodb.record.MongoRecord类伴侣对象:
object Post extends Post with MongoMetaRecord[Post] { ... }
答案 0 :(得分:2)
在specs2规范中,Fragments
是规范的一部分。 Fragment
可以是Text
,Example
,Step
。
某些片段(如Example
和Step
)意味着要执行,并且应该捕获异常,以便将它们标记为失败。但他们不会抓住Error
s(AssertionError
除外)。因此,如果示例抛出OutOfMemoryError
,则会将其报告为片段评估错误。
其他片段(如Text
片段)在评估时不应抛出异常。如果他们这样做,您将收到相同的Fragment evaluation error
消息。
如果没有看到完整的规范,我很难说出那里发生了什么,但我怀疑你在Example
的主体中抛出了非异常类型。但我现在有更多问题而不是答案:
test4
?在规范体内?在Context
案例类中?