[英]Mocha - coffeescript syntax
我正在將一些Mocha測試從JS轉換為coffeescript,並且beforeEach
函數有問題。 下面是我目前擁有的,但是在測試用例中無法識別data
變量。 有什么建議么?
beforeEach ->
data =
name: "test name"
to: "alice"
from: "bob"
object1: "foo"
object2: "bar"
這是原始的:
beforeEach(function(){
data = {
name: "test name",
to: "Alice",
from: "Bob",
object1: "foo",
object2: "bar"
}
});
在您的JavaScript版本中:
beforeEach(function(){
data = { ... }
});
data
是一個全局變量,因為它沒有使用var data
明確地作用於函數。 在您的CoffeeScript版本中:
beforeEach ->
data = ...
data
是beforeEach
回調函數內部的局部變量,因為這就是CoffeeScript中變量的工作方式 :
詞匯范圍和可變安全性
CoffeeScript編譯器會確保確保所有變量都在詞法范圍內正確聲明-您無需自己編寫
var
。
並且您的CoffeeScript最終像以下JavaScript所示:
beforeEach(function(){
var data = { ... }
});
data
隱藏在看不見的地方。
一種解決方案是在beforeEach
之外手動創建data
:
describe 'Whatever', ->
data = null
beforeEach ->
data = ...
這會給你同樣的data
內外beforeEach
和data
應該是你在里面每個的期待是什么it
秒。
另一種選擇是對data
使用實例變量:
beforeEach ->
@data = ...
然后看看it
里面的@data
。
我更喜歡第一個版本(通常使用data = null
確定data
范圍),因為您永遠不知道何時意外覆蓋別人的實例變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.