在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中不再有效。 任何人都知道如何获取这些?
感谢。
答案 0 :(得分:8)
我添加了一个新的jasmine报告器,然后获取规范名称,而不是在每个规范上定义N变量。希望可以提供帮助,谢谢。
var reporterCurrentSpec = {
specStarted: function(result) {
this.name = result.fullName;
}
};
jasmine.getEnv().addReporter(reporterCurrentSpec);
答案 1 :(得分:5)
这不再起作用的原因是因为this
不是测试。您可以对声明进行细微更改,但要修复它。而不只是做:
it("name for it", function() {});
将it
定义为变量:
var spec = it("name for it", function() {
console.log(spec.description); // prints "name for it"
});
这不需要插件,可以使用标准的Jasmine。
答案 2 :(得分:2)
就Jasmine 2而言,currentSpec是故意停止的。但是,开发了一个基于jasmine报告插件的自定义插件/库,您可以使用它。这是 Link。希望它有助于满足您的要求。
使用非常简单,使用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();
希望这有帮助。
答案 3 :(得分:0)
var currentSpecName = describe('Test1', function() {
var currentStepName = it("Step1", function(){
console.log(currentStepName.description); // Prints It Name
console.log(currentSpecName.getFullName()); //Prints Describe Name
});
});
答案 4 :(得分:0)
这在茉莉3.5+版本中对我有效
我知道这是一个相对较老的问题,但是发现了一些对我有用的
describe('Desc1',() => {
afterEach(() => {
const myReporter = {
specDone: (result) => {
console.log('Spec FullName: ' + result.fullName);
console.log('Spec Result: ' + result.status);
}
};
jasmine.getEnv().addReporter(myReporter);
});
})
解决方案的信用:https://groups.google.com/g/jasmine-js/c/qqOk6Nh7m4c/m/Nyovy2EjAgAJ
答案 5 :(得分:-2)
这可能有点晚了,但您可以在规范之外获得套件名称。 请尝试以下代码:
describe("name for describe", function () {
console.log(this.getFullName()); // would print "name for describe"
it("name for it", function () {
//Your test spec
});
});