ScalaTest WordSpec позволяет тесты должны быть проигнорированы, как это:ScalaTest: условно игнорировать тест WordSpec
class MySpec extends WordSpec {
"spec" should {
"ignore test" ignore {fail("test should not have run!")}
}
}
, который является большим, но я не хочу, чтобы забыть о игнорируемых тестах. Поэтому я хотел бы, чтобы поведение игнорирования истекало после указанной даты. В этот момент тест будет работать как обычно, либо: 1) пройти (надеюсь) или 2) напомнить мне, что он все еще сломан.
Для этого я пытаюсь расширить DSS WordSpec для поддержки функции ignoreUntil
. Это приняло бы дату истечения срока действия строки и проигнорировало бы тест, если дата еще будет в будущем, иначе запустите тест.
Мой тест спецификации будет выглядеть:
class MySpec extends EnhancedWordSpec {
"spec" should {
"conditionally ignore test" ignoreUntil("2099-12-31") {fail("test should not have run until the next century!")}
}
}
Я реализован ignoreUntil
функция здесь:
class EnhancedWordSpec extends WordSpecLike {
implicit protected def convertToIgnoreUntilWrapper(s: String) = new IgnoreUntilWordSpecStringWrapper(s)
protected final class IgnoreUntilWordSpecStringWrapper(wrapped: String) {
// Run test or ignore, depending if expiryDate is in the future
def ignoreUntil(expiryDate: String)(test: => Any): Unit = ???
}
}
Однако sbt test
дает мне следующую ошибку компиляции:
MySpec.scala:3: type mismatch;
[error] found : Char
[error] required: String
[error] "ignoreUntil" ignoreUntil("2099-12-31"){fail("ignoreUntil should not have run!")}
[error] ^
[error] one error found
[error] (test:compileIncremental) Compilation failed
Почему именно компилятор не похож на подпись ignoreUntil
функция?
Есть ли какое-то вуду с импликациями?
я уже рассматривал один набор параметров и сбрасывать со счетов, потому что она изменяет структуру теста немного больше, чем хотелось бы. Но мне нравится ваше решение использовать явный символ точки в вызове 'ignoreUntil'. Это кажется мне менее навязчивым решением. Спасибо, что объяснили ошибку и предложили решения. – cybersaurus