Jasmine2: получить текущее имя спецификации
В Jasmine 1.3 у нас была эта опция для получения текущих спецификаций и имен пакетов:
describe("name for describe", function () {
it("name for it", function () {
console.log(this.suite.getFullName()); // would print "name for describe"
console.log(this.description); // would print "name for it"
});
});
Это больше не работает в Jasmine 2.x.
Кто-нибудь знает, как их получить?
Спасибо.
Ответы
Ответ 1
Причина этого больше не работает, потому что this
не является тестом. Вы можете внести незначительные изменения в свои объявления, но это исправить. Вместо того, чтобы просто делать:
it("name for it", function() {});
Определите it
как переменную:
var spec = it("name for it", function() {
console.log(spec.description); // prints "name for it"
});
Это не требует плагинов и работает со стандартным Jasmine.
Ответ 2
Я добавляю нового репортера жасмина, а затем получаю имя спецификации без переменной N для каждой спецификации. Надежда может помочь, спасибо.
var reporterCurrentSpec = {
specStarted: function(result) {
this.name = result.fullName;
}
};
jasmine.getEnv().addReporter(reporterCurrentSpec);
Ответ 3
Что касается Жасмина 2, то токSpec прекращается специально. Однако существует разработанная специально разработанная плагин/библиотека, основанная на плагине жасминового репортера, которую вы можете использовать. Здесь Ссылка. Надеюсь, это поможет с вашим требованием.
Его очень просто использовать, установите пакет с командой npm -
npm install -g jasmine-test-container-support
Получите поддержку тестового контейнера, написав ниже строки перед тем, как описать или набор тестов -
var JasmineTestContainerSupport = window.JasmineTestContainerSupport || require('jasmine-test-container-support');
JasmineTestContainerSupport.extend(jasmine);
Позже используйте тестовый контейнер в спецификации, чтобы получить его описание -
var specDesc = jasmine.getEnv().getTestContainer();
Надеюсь, что это поможет.
Ответ 4
var currentSpecName = describe('Test1', function() {
var currentStepName = it("Step1", function(){
console.log(currentStepName.description); // Prints It Name
console.log(currentSpecName.getFullName()); //Prints Describe Name
});
});
Ответ 5
Это, вероятно, немного поздно, но вы можете получить имя пакета вне спецификации.
Пожалуйста, попробуйте следующий код:
describe("name for describe", function () {
console.log(this.getFullName()); // would print "name for describe"
it("name for it", function () {
//Your test spec
});
});