小编jaz*_*mit的帖子

Play中的装置!2为Scala

我正在尝试在Play中进行一些集成测试!2用于Scala应用程序.为此,我需要在每次测试之前加载一些灯具以使DB处于已知状态.

目前,我只是调用一个执行一堆Squeryl语句来加载数据的方法.但是声明性地声明灯具,无论是使用Scala DSL还是使用JSON或YAML等语言,都更容易理解.

这个 Java应用程序示例中,我看到夹具是从YAML文件加载的,但是等效的Scala应用程序正在进行manula加载,就像我现在正在做的那样.

我还发现这个项目没有很好的记录,而且看起来比我想要的要复杂得多 - 我甚至都不清楚夹具数据的实际声明位置.

是否还有其他选项可以在Play中加载灯具!应用?

testing scala fixtures playframework playframework-2.0

7
推荐指数
2
解决办法
2953
查看次数

使用specs2和FakeApplication()来测试数据库会失败进化插入

这是为了玩!框架2.0.

我正在尝试编写一个简单的测试用例,以确保我的用户模型正常运行并在我的数据库中保存数据.如果可能的话,我想在内存中运行它,这样我就可以在每次新的运行中重新开始.

我遇到的问题是我的演变运行(表格已创建,数据已插入,但我不能将其视为存在).首先,我的代码.

CREATE TABLE user_data (
id SERIAL PRIMARY KEY,
user_name varchar(256) UNIQUE NOT NULL,
email varchar(256) NOT NULL,
password varchar(256) NOT NULL,
edits int NOT NULL,
reports int NOT NULL,
active BOOLEAN NOT NULL);

INSERT INTO user_data(user_name, email, password, edits, reports, active) VALUES ('user1', 'user1@email.com', '12345678', 0, 0, true);
Run Code Online (Sandbox Code Playgroud)

在application.conf中

db.default.driver=org.postgresql.Driver
db.default.url="postgres://user:password@localhost:5432/ME"
Run Code Online (Sandbox Code Playgroud)

在build.scala中

val appDependencies = Seq(
  // Add your project dependencies here,
    "postgresql" % "postgresql" % "9.1-901-1.jdbc4"
)
Run Code Online (Sandbox Code Playgroud)

测试代码

class User_dataSpec extends Specification {

  "The Database" should …
Run Code Online (Sandbox Code Playgroud)

testing scala playframework specs2 playframework-2.0

6
推荐指数
1
解决办法
3703
查看次数

如果只使用堆栈,如何取消隐藏包?

我想试试Writerghci中的monad.正如这里所建议的,我试图只使用堆栈来管理GHC和包,并避免全局安装.

从一个全新的Ubuntu 15.04安装,安装堆栈后:

stack setup
mkdir lyah && cd lyah
stack new
stack install mtl
stack ghci
ghci> import Control.Monad.Writer
Could not find module ‘Control.Monad.Writer’
It is a member of the hidden package ‘mtl-2.1.3.1’.
Run Code Online (Sandbox Code Playgroud)

我知道pre-stack ghc-pkg用于显示/隐藏包,但我不知道如何继续"取消隐藏"mtl包.

haskell haskell-stack

6
推荐指数
1
解决办法
2660
查看次数

在SBT设置中将目录附加到监视源

我想在watchedSources设置中添加一个目录,以便在我在该目录中保存文件时触发构建任务.

override def baseProject = play.Project(
  moduleName,
  moduleVersion,
  dependencies = libraries,
  path = file(location),
  settings = moduleSettings ++ Seq(
    watchSources <++= baseDirectory map { dir =>
      Seq(
        dir / "src/main/javascript"
      )
    }
  )
)
Run Code Online (Sandbox Code Playgroud)

我似乎无法解决以下错误:

type mismatch;
[error]  found   : sbt.Project.Initialize[ScalaObject with Equals]
[error]  required: sbt.Project.Initialize[sbt.Task[?]]
[error] Note: ScalaObject with Equals >: sbt.Task[?], but trait Initialize is invariant in type T.
[error] You may wish to define T as -T instead. (SLS 4.5)
[error]     watchSources <++= baseDirectory { f => …
Run Code Online (Sandbox Code Playgroud)

sbt coffeescript playframework-2.0

5
推荐指数
1
解决办法
1174
查看次数

在Vim中切换项目的最佳方法是什么?

我使用CtrlP来解决项目中的文件(通常可以将其定义为git repo root),但经常发现自己使用:cd在不同项目之间切换,这似乎不必要地耗费时间.

我希望vim能够记住我访问过的不同的git repo根,并在它们之间快速跳转.在那里,repo中的所有文件都可用于CtrlP,我可以到达我想要的位置.

有没有办法通过现有的插件获得我想要的东西?

vim

5
推荐指数
1
解决办法
1075
查看次数

Akka Actors傻瓜单元测试

我是Akka和Scala的新手,我来自一个并发的世界。可能我做错了很多事情,即使与问题无关,我也会感谢您的反馈。

我正在用Akka和Scala做一个简单的聊天应用程序。我从“键入功能”开始(不列颠哥伦比亚省的业务要求)...这是whatsapp或“约翰正在键入消息”的典型功能。

我已经使用两种参与者类型对它进行建模:对话者和对话,并且我想对对话参与者进行单元测试。我的对话演员看起来像这样:

object Conversation {
  def props(conversationId: UUID, talkers: List[ActorRef])(out: ActorRef) = Props(new Conversation(conversationId, talkers))

  case class Typing(talkerId: TalkerId)
}

class Conversation(conversationId: UUID, talkers: List[ActorRef]) extends Actor with ActorLogging {
  def receive = LoggingReceive {
    case Typing(talkerId) =>
      // notify all talkers that a talker is typing
      // @TODO don't notify user which is typing
      talkers foreach {talker: ActorRef => talker ! InterlocutorTyping(talkerId)}
 }
}
Run Code Online (Sandbox Code Playgroud)

我认为,到现在为止很简单。因此,在开始使用Scala和Akka进行编码之前,我已经进行了如下测试:

  • 我得到了对话演员
  • 我嘲笑说话者
  • 我发送信息给演员
  • 我希望应该通知说话者

我真的不知道在Scala和Akka中这是否是正确的方法。我的测试(使用scalatest)如下所示:

"Conversation" should {
"Notify interlocutors when a talker …
Run Code Online (Sandbox Code Playgroud)

unit-testing scala akka scalatest akka-testkit

5
推荐指数
1
解决办法
2366
查看次数

将 Slick SQL 查询结果映射到案例类

我有一个由多个连接/左连接组成的复杂 sql 查询,其结果类型如下所示:

val query = sql"""
     // body of query
   """.as[(Long, String, String, Int, Long, Long, String, Int, Option[Int], Option[Int], Option[String], Option[Timestamp], Option[Timestamp])]
Run Code Online (Sandbox Code Playgroud)

运行此查询的结果是具有 10 多个属性的元组列表。处理该列表以生成案例类:

 db.run(query).map(_.groupBy { case (p1, p2, p3, p4, _, _, _, _, _, _, _, _, _) =>
  (p1, p2, p3, p4)
 }.map { case ((o1, co2, o3, o4), o5) =>
  CaseClass1(o1, co2, o3, Seq(o4), o5.groupBy {
    case (_, _, _, _, u1, _, _, _, _, _, _, _, _) => u1
  }.map …
Run Code Online (Sandbox Code Playgroud)

sql scala slick

3
推荐指数
1
解决办法
3491
查看次数