Scala 点击事件测试失败
我遵循的是,在测试部分有如下代码:Scala 点击事件测试失败,scala,scala.js,utest,Scala,Scala.js,Utest,我遵循的是,在测试部分有如下代码: package tutorial.webapp import utest._ import org.scalajs.jquery.{JQuery, jQuery} object TutorialTest extends TestSuite { // Initialize App TutorialApp.setupUI def tests = TestSuite { 'HelloWorld { val ps = jQue
package tutorial.webapp
import utest._
import org.scalajs.jquery.{JQuery, jQuery}
object TutorialTest extends TestSuite {
// Initialize App
TutorialApp.setupUI
def tests = TestSuite {
'HelloWorld {
val ps = jQuery("p:contains('Hello World')")
log("Number of hello-world paragraphs", ps.length)
assert(ps.length == 1)
}
'ButtonClick {
def messageCount =
jQuery("p:contains('Bang!')").length
val button = jQuery("button:contains('Click me!')")
log("Number of bang paragraphs", messageCount)
log("Number of button", button.length)
assert(button.length == 1)
assert(messageCount == 0)
for (c <- 1 to 5) {
log("Number of bang paragraphs", messageCount)
log("Number of button", button.length)
button.click()
assert(messageCount == c)
}
}
def log[A](header: String, msg: A): Unit = {
println(
"""
|
|
|=========================================
|%s : %s
|=========================================
|
|
""".format(header, msg.toString).stripMargin)
}
}
整个项目如下:
单击行为定义如下:
package tutorial.webapp
/**
* Created by IDEA on 27/10/15.
*/
import scala.scalajs.js.JSApp
import org.scalajs.dom
import dom.document
import scala.scalajs.js.annotation.JSExport
import org.scalajs.jquery.jQuery
object TutorialApp extends JSApp {
def main(): Unit = {
setupUI
setupBehavior
}
def appendPar(targetNode: dom.Node, text: String): Unit = {
val parNode = document.createElement("p")
val textNode = document.createTextNode(text)
parNode.appendChild(textNode)
targetNode.appendChild(parNode)
}
def addClickedMessage(msg: String): Unit = {
jQuery("body").append("<p>%s</p>".format(msg))
}
def setupUI: Unit = {
jQuery("body").append("<p>Hello World!</p>")
jQuery("body").append("""<button id="click-me-button" type="button">Click me!</button>""")
}
def setupBehavior: Unit = {
jQuery("#click-me-button").click(() => addClickedMessage("Bang!"))
}
}
package tutorial.webapp
/**
*由IDEA于2015年10月27日创建。
*/
导入scala.scalajs.js.JSApp
导入org.scalajs.dom
导入dom.document
导入scala.scalajs.js.annotation.JSExport
导入org.scalajs.jquery.jquery
对象教程Alapp扩展了JSApp{
def main():单位={
setupUI
设置行为
}
def appendPar(targetNode:dom.Node,文本:字符串):单位={
val parNode=document.createElement(“p”)
val textNode=document.createTextNode(文本)
appendChild(textNode)
targetNode.appendChild(parNode)
}
def addClickedMessage(消息:字符串):单位={
jQuery(“body”).append(“%s”。格式(msg))
}
def setupUI:单位={
jQuery(“body”).append(“helloworld!”)
jQuery(“body”).append(“单击我!”)
}
def设置行为:单位={
jQuery(“单击我按钮”)。单击(()=>addClickedMessage(“砰!”)
}
}
您的按钮实际上什么也不做。您的测试不会调用setupBehavior
,这将注册按钮上的单击事件。因此,调用click()。没有添加任何消息,并且测试正确地报告没有消息
确保致电setupBehavior
解决您的问题 问题是什么?它与标题有什么关系?点击按钮能做什么(你没有提供代码)?我觉得给github链接就足够了,因为帖子已经很长了。不管怎样,现在添加了代码。
package tutorial.webapp
/**
* Created by IDEA on 27/10/15.
*/
import scala.scalajs.js.JSApp
import org.scalajs.dom
import dom.document
import scala.scalajs.js.annotation.JSExport
import org.scalajs.jquery.jQuery
object TutorialApp extends JSApp {
def main(): Unit = {
setupUI
setupBehavior
}
def appendPar(targetNode: dom.Node, text: String): Unit = {
val parNode = document.createElement("p")
val textNode = document.createTextNode(text)
parNode.appendChild(textNode)
targetNode.appendChild(parNode)
}
def addClickedMessage(msg: String): Unit = {
jQuery("body").append("<p>%s</p>".format(msg))
}
def setupUI: Unit = {
jQuery("body").append("<p>Hello World!</p>")
jQuery("body").append("""<button id="click-me-button" type="button">Click me!</button>""")
}
def setupBehavior: Unit = {
jQuery("#click-me-button").click(() => addClickedMessage("Bang!"))
}
}