Testing 与Laika和PhantomJS的集成测试
我刚开始使用Laika在我的Meteor应用程序上做一些TDD。尽管如此,我还是想做一些集成测试,因为单元测试对我来说没什么价值 我可以通过Laika用PhantomJS做一些屏幕截图吗?例如,我想单击html链接并按类/id选择元素 我有一个关于咖啡的基本(单元)测试: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
# 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。使用“数据测试”可以让您明白这一点。谢谢您的回答!在等待回答时,我使用了硒。所以,由于这是一个工作项目,我不认为我会很快测试出来。它将不得不等到我的下一个流星项目希望它能同时帮助其他人。在没有测试的情况下将它标记为正确答案,但因为它看起来合法,我不得不相信你的话。希望有人会告诉我,如果它不工作或什么。