我有some code我目前正在这样调用。
screenshot.snap(this, $('.navbar-inner .container'));
在上面的代码中,传入的this
对象来自mocha.js。它包含当前测试名称,其所在文件等信息。我使用该信息来命名屏幕截图。
我想删除在任何地方传递this
引用的必要性,但无论我如何尝试在snap
函数内部达到它,我都无法找到我的信息需要。
var testContext = exports.snap.caller; //.prototype? .this?
我已经检查了exports.snap.caller.toString()
,它是在mocha测试套件中调用的函数。我是通过调试repl完成的,并且在进一步检查时看到我可以得到的唯一信息是the properties of a function instance,它不包含来自调用函数this
的任何内容。
有没有办法做到这一点,或者每次调用我的this
函数时,我是否卡在screenshot.snap
参数中?
答案 0 :(得分:0)
您可以在before
块中执行某些操作,例如:
var snap;
before(function () {
browser.get('https://angularjs.org');
snap = screenshot.snap.bind(this);
});
然后将screenshot.snap(this, $('.navbar-inner .container'));
替换为snap($('.navbar-inner .container');
根据mocha处理this
指针的方式,您可能需要在beforeEach
循环中执行此操作。
答案 1 :(得分:0)
不,其他范围的this
值无法通过编程方式访问。
您需要将值显式传递给snap
函数,或者使其在snap
函数访问的全局范围内可用。