Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Testing 与Laika和PhantomJS的集成测试_Testing_Meteor_Phantomjs_Laika - Fatal编程技术网

Testing 与Laika和PhantomJS的集成测试

Testing 与Laika和PhantomJS的集成测试,testing,meteor,phantomjs,laika,Testing,Meteor,Phantomjs,Laika,我刚开始使用Laika在我的Meteor应用程序上做一些TDD。尽管如此,我还是想做一些集成测试,因为单元测试对我来说没什么价值 我可以通过Laika用PhantomJS做一些屏幕截图吗?例如,我想单击html链接并按类/id选择元素 我有一个关于咖啡的基本(单元)测试: # tests/players_test.coffee assert = require 'assert' suite 'Players', -> test 'in the server', (done, ser

我刚开始使用Laika在我的Meteor应用程序上做一些TDD。尽管如此,我还是想做一些集成测试,因为单元测试对我来说没什么价值

我可以通过Laika用PhantomJS做一些屏幕截图吗?例如,我想单击html链接并按类/id选择元素

我有一个关于咖啡的基本(单元)测试:

# tests/players_test.coffee

assert = require 'assert'

suite 'Players', ->
  test 'in the server', (done, server) ->
    server.eval ->
      Players.insert title: 'hello there'
      players = Players.find().fetch()
      emit('players', players)

    server.once 'players', (players) ->
      assert.equal 1, players.length
      done()
我想通过使用客户端(添加到测试功能中的
(完成,服务器)
旁边)将此转换为集成测试,然后手动选择标记并单击链接,填写名称等,单击例如“注册”,然后检查是否在数据库中找到该用户

谢谢

是的,你可以这样做

suite 'Players', ->
  test 'in the server', (done, server, client) ->
    client.eval ->
      // get access to a DOM element (can optionally use jQuery instead)
      player = document.querySelector("[data-test='player']")
      // now we can call functions on the element
      player.value = "Joe blogs"
      player.click()
      // if you know the element won't exist in the DOM yet use waitForDOM
      waitForDOM "[data-test='something-else']", ->
         // perform some logic now that the element exists in the DOM
      emit('players', players)

    server.once 'players', (players) ->
      assert.equal 1, players.length
      done()
您可能还想在此处查看evalSync:

这允许您以同步样式编写测试。它仍在异步执行,但这意味着您不必担心“eval”测试所具有的所有不同命名触发器/订阅。下面是evalSync的基础知识

suite 'evalSync', ->
    test 'evalSync for the win', (done, server, client) ->
        client.evalSync ->
            // perform some logic on the client
            emit("return")

        server.evalSync ->
            // perform some logic on the server
            emit("return")

        done() // notice this is outside the 'evalSync'

作为补充说明,我建议在元素上使用“数据测试”属性(或其他一些自定义数据属性)。如果您在测试中选择“按类”或“按id”,然后在稍后重构CSS/HTML,那么您必须查找CSS正在使用哪些类/id,以及测试正在使用哪些类/id。使用“数据测试”可以让您明白这一点。

谢谢您的回答!在等待回答时,我使用了硒。所以,由于这是一个工作项目,我不认为我会很快测试出来。它将不得不等到我的下一个流星项目希望它能同时帮助其他人。在没有测试的情况下将它标记为正确答案,但因为它看起来合法,我不得不相信你的话。希望有人会告诉我,如果它不工作或什么。