контекст класса case в приемочных тестах specs2: "must не является членом Int" - PullRequest
3 голосов
/ 09 марта 2012

Я использую specs2 (v1.8.2) в Scala (v2.9.1) для написания приемочных тестов.Следуя примеру на http://etorreborre.github.com/specs2/guide/org.specs2.guide.SpecStructure.html#Contexts, У меня есть следующая спецификация и класс контекста:

import org.specs2._


class testspec extends SpecificationWithJUnit { def is =

    "test should" ^
        "run a test in a context" ! context().e1

}

case class context() {

    def e1 = 1 must beEqualTo(1)
}

Я получаю ошибку компилятора:

ошибка: значение не должно бытьчлен Int def e1 = 1 должен быть beEqualTo (1)

при компиляции класса контекста.

Очевидно, я новичок в specs2 (и в Scala).Будем весьма благодарны за ссылки на соответствующую документацию.

Ответы [ 2 ]

3 голосов
/ 12 марта 2012

Очевидно, что документ неправильный ( был неправильный, я исправил это сейчас).

Правильный способ написать объявление класса case для контекста - обычно включать его в Specification scope:

import org.specs2._

class ContextSpec extends Specification { def is =
  "this is the first example" ! context().e1

  case class context() {
    def e1 = List(1,2,3) must have size(3)
  }
}

В противном случае, если вы хотите повторно использовать контекст в другой спецификации, вы можете, как писал Дарио, получить доступ к функциям MustMatchers, либо импортировав методы объекта MustMatchers, либо наследуяMustMatchers черта.

2 голосов
/ 09 марта 2012

must не является членом Int, потому что значение «must» не известно в контексте вашего класса «context». Поместите метод "e1" в ваш класс спецификации, и он должен работать. Э.Г.

import org.specs2._

class TestSpec extends Specification { def is =
  "test should" ^
    "run a test in a context" ! e1 ^
    end

  def e1 = 1 must beEqualTo(1)

}

редактировать

Ах, я вижу, что вы хотите ;-). Это должно работать так:

Чтобы соответствия были включены в контекст контекстного класса, вам необходимо импортировать MustMatchers.

import org.specs2._
import matcher.MustMatchers._

class ContextSpec extends Specification { def is =
  "this is the first example" ! context().e1
}

case class context() {
  def e1 = List(1,2,3) must have size(3)
}
...