禁用Jasmine期望,如xdescribe或xit?

Vin*_*rga 7 javascript database jasmine angularjs-e2e protractor

Jasmine网站上,我看到我们可以按照xdescribe或按个别规格禁用套件xit.有没有办法只禁用期望(如xexpect)?

我问这个的原因是因为我正在用Protractor编写e2e测试,在我们的持续集成中,我们还没有(如果有的话)可以访问数据库,虽然在本地我们可以运行真正的端到端测试例如,到数据库.

我想将个别期望标记为可选,具体取决于配置或环境变量.做一次切换,然后在expect周围创建一个包装器会很好,只有当我们在本地运行测试(访问数据库)时才会失败.

例如,我可以创建一个新的规范系列:

if (process.env.DB_AVAILABLE) {
  dbit = it;
} else {
  dbit = xit;
}
Run Code Online (Sandbox Code Playgroud)

并编写依赖于数据库连接的规范,如下所示:

dbit('creates new user', function () {});
Run Code Online (Sandbox Code Playgroud)

有没有办法对expect(例如dbexpect)做同样的事情?

如果我的方法存在根本性的问题,请不要阻止它让我知道.

Flo*_* B. 4

xexpect您可以通过使用空函数实现所有方法/属性来创建自己的方法/属性:

var xexpect = function() {
  return xexpect;
};

Object.getOwnPropertyNames(jasmine.Expectation.prototype).forEach(function(name){
  xexpect[name] = xexpect;
});

Object.defineProperty(xexpect, 'not', {get: xexpect});
Run Code Online (Sandbox Code Playgroud)

用法 :

xexpect(1).toBeGreaterThan(2);

xexpect(true).not.toEqual(true);
Run Code Online (Sandbox Code Playgroud)