这是为了玩!框架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) 我想试试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包.
我想在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) 我使用CtrlP来解决项目中的文件(通常可以将其定义为git repo root),但经常发现自己使用:cd在不同项目之间切换,这似乎不必要地耗费时间.
我希望vim能够记住我访问过的不同的git repo根,并在它们之间快速跳转.在那里,repo中的所有文件都可用于CtrlP,我可以到达我想要的位置.
有没有办法通过现有的插件获得我想要的东西?
我是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) 我有一个由多个连接/左连接组成的复杂 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) scala ×4
testing ×2
akka ×1
akka-testkit ×1
coffeescript ×1
fixtures ×1
haskell ×1
sbt ×1
scalatest ×1
slick ×1
specs2 ×1
sql ×1
unit-testing ×1
vim ×1