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!"))
  }

}