我需要類似摩卡的only
方法是否可以在CasperJS中只運行一個特定的測試?
it.only "should test something"
對於那些誰不知道它的東西意味着摩卡將推出所有,如果我不會寫only
在CasperJS中可以做類似嗎?現在,我使用的是惱人的「註釋/取消註釋」技術
我需要類似摩卡的only
方法是否可以在CasperJS中只運行一個特定的測試?
it.only "should test something"
對於那些誰不知道它的東西意味着摩卡將推出所有,如果我不會寫only
在CasperJS中可以做類似嗎?現在,我使用的是惱人的「註釋/取消註釋」技術
你可以使用參數選項:casperjs test scriptName.js --only=true
而在你casperjs文件:
if (casper.cli.get("only")){var only=true;}
else {var only=false;}
然後在你想要的斷言:
if (!only){ test.assertExists(....);}
else {"should test something"}
你可以用類似的方法做相反的處理。
編輯:
如果它是你可以使用casperjs setUp()
功能和調用另一個函數(),它過濾的情況下,使用命令選項和casper.test.done()
,像這樣的場景:
var setLevel = function(level){
if(casper.cli.get("mode") !== level){
casper.test.done();
}
};
casper.test.begin('\n***** Scenario : *****',{
setUp: function(test) {
setLevel("only");
},
test: function(test){
"use strict";
casper.start()
.run(function() {
this.test.comment('--- Done ---\n');
test.done();
});
}
});
因此,如果您使用casperjs test path/to/folder --mode="only"
調用它,它將立即關閉每個場景,其中級別未設置爲而只有。但是,如果您不想看到它們,它會輸出打開日誌,但在casper.test.begin()
之前使用casper.test.setUp()方法。是的,在調用begin()之前完成測試是很奇怪的,但是如果我記得它確實有效。
這也是一個醜陋的黑客,但對我來說這是一個解決方案。問題是:有必要在每個文件中使用setUp()
和setLevel()
。無論如何,沒有原生的選擇。
這是醜陋的黑客,而不是解決方案 –
請參閱編輯更好的醜陋的黑客:) – Fanch
創建自己的兩個函數,包裝casper.test.begin
並使用它們。您將需要第三功能實際上是調度測試(猴修補版本看到跳轉下文):
var testcase = (function(casper){
var scenarios = [],
onlySet = false;
return {
it: function(){
if (!onlySet) {
scenarios.push(arguments);
}
},
itOnly: function(){
onlySet = true;
scenarios = [arguments];
},
build: function(){
scenarios.forEach(function(scenario){
casper.test.begin.apply(casper.test, scenario);
});
}
};
})(casper);
然後你可以寫你的情況下以這樣的方式
testcase.it("something", function suite(test){
test.assert(true);
});
testcase.itOnly("something2", function suite(test){
test.assert(true);
});
testcase.it("something3", function suite(test){
test.assert(true);
});
testcase.build();
輸出將是:
# something2
PASS Subject is strictly true
當然你可以猴子修補casper.test
實例帶你的功能:
(function(casper){
// IIFE to avoid leaking scenarios
var scenarios = [],
onlySet = false,
oldBegin = casper.test.begin;
casper.test.begin = function(){
if (!onlySet) {
scenarios.push(arguments);
}
};
casper.test.beginOnly = function(){
onlySet = true;
scenarios = [arguments];
};
casper.test.build = function(){
scenarios.forEach(function(scenario){
oldBegin.apply(casper.test, scenario);
});
};
})(casper);
casper.test.begin("something", function suite(test){
test.assert(true);
});
casper.test.beginOnly("something2", function suite(test){
test.assert(true);
});
casper.test.begin("something3", function suite(test){
test.assert(true);
});
casper.test.build();
你叫什麼_one test_?一個文件/場景,一個步驟?一個斷言?你想過濾一些斷言? – Fanch
@Fanch我想它被稱爲場景。即'casper.test.begin' –