簡體   English   中英

摩卡-coffeescript語法

[英]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 = ...

databeforeEach回調函數內部的局部變量,因為這就是CoffeeScript中變量的工作方式

詞匯范圍和可變安全性

CoffeeScript編譯器會確保確保所有變量都在詞法范圍內正確聲明-您無需自己編寫var

並且您的CoffeeScript最終像以下JavaScript所示:

beforeEach(function(){
    var data = { ... }
});

data隱藏在看不見的地方。

一種解決方案是在beforeEach之外手動創建data

describe 'Whatever', ->
  data = null
  beforeEach ->
    data = ...

這會給你同樣的data內外beforeEachdata應該是你在里面每個的期待是什么it秒。

另一種選擇是對data使用實例變量:

beforeEach ->
  @data = ...

然后看看it里面的@data

我更喜歡第一個版本(通常使用data = null確定data范圍),因為您永遠不知道何時意外覆蓋別人的實例變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM