我在 Ruby 和 Rspec 方面有相当广泛的背景。然而,当我学习 Node 和 Mocha 时,我遇到了我似乎无法理解的语法。
以本教程为例,测试路由包括以下内容(使用 CoffeeScript)。还应该注意的是,我在许多其他地方看到过以下示例,这些示例向初学者解释了 Mocha。
require "should"
routes = require "../routes/index"
describe "routes", ->
describe "index", ->
it "should display index with posts", ->
req = null
res =
render: (view, vars) ->
view.should.equal 'index'
vars.title.should.equal('My Coffeepress Blog')
routes.index(req, res)
如果我理解正确,此测试会设置模拟请求和响应变量(分别为 req 和 res)并将它们发送到 routes.index() 函数。
不过,我不明白的是,它为什么以及如何在 render() 函数调用中进行断言。这似乎是一种完全不同的测试方法,因为我习惯于设置数据,根据预期值测试数据,然后将数据分解。在这里,似乎“设置数据”(创建模拟 res 对象)的一部分正在做出断言。
任何人都可以向精通 Rspec 的人解释这一点吗?