spray-testkit === 状态通过任何状态
spray-testkit === status passes whatever status is
我在 spray-testkit 中使用 scalatest 进行了以下测试,我不明白为什么测试每次都通过,尽管实际状态如此。
import akka.actor._
import akka.event.LoggingReceive
import akka.testkit.TestProbe
import com.ss.rg.service.ad.AdImporterServiceActor.{GetImportStatus, StatusOfImport}
import org.scalatest.{MustMatchers, WordSpecLike}
import spray.http._
import spray.testkit.ScalatestRouteTest
class AdServiceApiTest extends WordSpecLike with MustMatchers with ScalatestRouteTest {
"AdService REST api " must {
"POST for import with mandatory parameters should be processed" in {
val p = TestProbe()
val addressServiceMock = system.actorOf(Props(classOf[AdServiceActorMock], p.ref))
Post("/service/ad/import?adId=1") ~> new AdServiceApi(addressServiceMock).route ~> check {
handled must be(true)
// rejections must have size 1
response.status === StatusCodes.NotAcceptable
}
}
}
测试通过,即使状态应该不同,当我由于明显的原因(如拒绝)使测试失败时...错误消息如下:
Request was not rejected, response was HttpResponse(202 Accepted,HttpEntity(text/plain; charset=UTF-8,The request has been accepted for processing, but the processing has not been completed.),List(),HTTP/1.1)
org.scalatest.exceptions.TestFailedException: Request was not rejected, response was HttpResponse(202 Accepted,HttpEntity(text/plain; charset=UTF-8,The request has been accepted for processing, but the processing has not been completed.),List(),HTTP/1.1)
at spray.testkit.ScalatestInterface$class.failTest(ScalatestInterface.scala:25)
看来我在这里遗漏了一些重要的概念。
有人可以澄清一下吗?
更新:以下工作正常
status must equal(StatusCodes.Accepted)
===
不够。你必须写
status should === (StatusCodes.NotAcceptable)
或
assert(status === StatusCodes.NotAcceptable)
我在 spray-testkit 中使用 scalatest 进行了以下测试,我不明白为什么测试每次都通过,尽管实际状态如此。
import akka.actor._
import akka.event.LoggingReceive
import akka.testkit.TestProbe
import com.ss.rg.service.ad.AdImporterServiceActor.{GetImportStatus, StatusOfImport}
import org.scalatest.{MustMatchers, WordSpecLike}
import spray.http._
import spray.testkit.ScalatestRouteTest
class AdServiceApiTest extends WordSpecLike with MustMatchers with ScalatestRouteTest {
"AdService REST api " must {
"POST for import with mandatory parameters should be processed" in {
val p = TestProbe()
val addressServiceMock = system.actorOf(Props(classOf[AdServiceActorMock], p.ref))
Post("/service/ad/import?adId=1") ~> new AdServiceApi(addressServiceMock).route ~> check {
handled must be(true)
// rejections must have size 1
response.status === StatusCodes.NotAcceptable
}
}
}
测试通过,即使状态应该不同,当我由于明显的原因(如拒绝)使测试失败时...错误消息如下:
Request was not rejected, response was HttpResponse(202 Accepted,HttpEntity(text/plain; charset=UTF-8,The request has been accepted for processing, but the processing has not been completed.),List(),HTTP/1.1)
org.scalatest.exceptions.TestFailedException: Request was not rejected, response was HttpResponse(202 Accepted,HttpEntity(text/plain; charset=UTF-8,The request has been accepted for processing, but the processing has not been completed.),List(),HTTP/1.1)
at spray.testkit.ScalatestInterface$class.failTest(ScalatestInterface.scala:25)
看来我在这里遗漏了一些重要的概念。
有人可以澄清一下吗?
更新:以下工作正常
status must equal(StatusCodes.Accepted)
===
不够。你必须写
status should === (StatusCodes.NotAcceptable)
或
assert(status === StatusCodes.NotAcceptable)