2016-05-19 32 views
0

我剛開始使用cucumberJs,gulp和量角器爲一個角度的應用程序,並注意到,幸運的是,我的所有步驟都過去了,如果你不通過並在步驟定義中使用'callback'參數,cucumberJs可能不會知道,當該步驟完成,並且將跳過的其它步驟和它們所有標記爲「通過」CucumberJs跳過步驟定義 - 也許回調步驟定義中的最後一個參數?

下面是從cucumberJs文檔的一個示例:https://github.com/cucumber/cucumber-js

實施例1:

this.Given(/^I am on the Cucumber.js GitHub repository$/, function (callback) { 
    // Express the regexp above with the code you wish you had. 
    // `this` is set to a World instance. 
    // i.e. you may use this.browser to execute the step: 

    this.visit('https://github.com/cucumber/cucumber-js', callback); 

    // 

的回調是通過編輯訪問()這樣,當作業的完成,該 下一步可以 //黃瓜

執行。 });

實施例2:

this.When(/^I go to the README file$/, function (callback) { 
    // Express the regexp above with the code you wish you had. 

呼叫回調()結尾 //的步驟中,或回調(NULL, '等待處理'),如果步驟尚未實現:

callback(null, 'pending'); 
    }); 

實施例3:

this.Then(/^I should see "(.*)" as the page title$/, function (title, callback) { 
    // matching groups are passed as parameters to the step definition 

    var pageTitle = this.browser.text('title'); 
    if (title === pageTitle) { 
     callback(); 
    } else { 
     callback(new Error("Expected to be on page with title " + title)); 
    } 
    }); 

};

我知道你在這裏有兩個選擇: a。 b。您要麼退回承諾,不要將電話轉回或b。您傳遞迴調參數,並在步驟定義完成後調用它,以便cucumberJs知道要返回並轉到下一步或下一個場景。

但是,我嘗試了上述兩種方法,仍然遇到了一個奇怪的情況,前兩種情況按照您的預期正常工作,但同一功能文件中的第三種和第四種情況將被忽略並全部通過。

有什麼特別的要考慮超過2場景的功能? 只要我有每個功能文件的< = 2場景,一切正常,但是當我有第三個場景時,該第三個場景被忽略並跳過。

任何想法?

回答

0

沒有看到你的實際步驟,我不能肯定地說,但它聽起來像是一個異步問題,或者我敢說,這是一個方案中的語法錯誤。你有沒有嘗試改變場景的順序,看看是否有影響。

+0

嗨findlayc,是的,這是奇怪的事情,改變場景的工作順序,而不改變實際場景 - 場景中沒有語法錯誤,否則相同的場景將不會僅僅通過重新排列順序。 – pelican

+0

聽起來像是一個異步問題 – findlayc