我是新的< code>Sinon。我无法窥探私有的< code>ajax函数
function ajax () {
console.log("I'm a");
}
function getJSON() {
ajax();
console.log("I'm b");
}
exports.getJSON = getJSON;
var sinon = require('sinon');
var lib = require('./library');
describe('Tutor Test', function () {
it('getJSON Calling ajax', function (done) {
var ajax = sinon.spy(lib, 'ajax');
lib.getJSON();
ajax.restore();
sinon.assert.calledOnce(ajax);
done();
});
});
注意:我已经尝试了下面的对象示例。它像魅力一样工作。
var jquery = {
ajax: function () {
console.log("I'm a");
},
getJSON: function () {
this.ajax();
console.log("I'm b");
}
};
exports.jquery = jquery;
var sinon = require('sinon');
var $ = require('./library').jquery;
describe('Tutor Test', function () {
it('getJSON Calling ajax', function (done) {
var ajax = sinon.spy($, 'ajax');
$.getJSON();
ajax.restore();
sinon.assert.calledOnce(ajax);
done();
});
});
我在摩卡测试
期间收到如下错误
1) Tutor Test getJSON Calling ajax:
TypeError: Attempted to wrap undefined property ajax as function
at Object.wrapMethod (node_modules/sinon/lib/sinon/util/core.js:113:29)
at Object.spy (node_modules/sinon/lib/sinon/spy.js:41:26)
at Context.<anonymous> (test.js:41:26)
从导出的公共API调用方法。
var jquery = {
ajax: function () {
console.log("I'm a");
},
getJSON: function () {
//this.ajax();
jquery.ajax(); // <---
console.log("I'm b");
}
};
另一种方法是调用控制台.log提示,然后监视日志。
ajax: function () {
console.log("I'm a");
},
var ajax = sinon.spy(console, 'log');
$.getJSON();
sinon.assert.calledOnceWithExactly("I'm a")
注意:您的(ajax
)函数没有参数和返回值,并且未绑定到导出的对象是正弦
的真正挑战
在这种情况下,如果您想确定ajax
函数是否被触发。您可以使用rewire
。
下面是工作代码。
var rewire = require('rewire');
var lib = rewire('./library');
const assert = require('assert');
describe('Tutor Test', function () {
it('getJSON Calling ajax', function (done) {
lib.__set__('isAjaxCalled', false);
lib.__set__('ajax', function () {
lib.__set__('isAjaxCalled', true);
});
lib.getJSON();
assert.equal(lib.__get__('isAjaxCalled'), true);
done();
});
});
严格说来,Ruby中没有函数.但Kernel模块中定义的方法(可以在任何地方用做函数,因此)可被其他语言当做函数来调用.若您对这些方法进行再定义时,就必需考虑到对其他方面的影响. `str 把字符串str当做外部命令来运行,并以字符串方式返回命令的输出.使用`str`形式来调用该方法(还可以使用%x(...)表示法进行调用.请参考命令输出). 可以使用$?来了解命令的结束状态. 若您只想执行命令,
我正在重构一个越来越大的android项目。运行lint使我能够在外部类和内部类之间访问JSME问题私有成员。考虑下面的例子 我得到消息了 应用问题解决方案会将源更改为 我现在有点困惑。直到现在,我还以为这个例子相当于 在这种情况下,我错了吗?还是这是棉绒的问题?
5.9. 私有函数 与大多数语言一样,Python 也有私有的概念: 私有函数不可以从它们的模块外面被调用 私有类方法不能够从它们的类外面被调用 私有属性不能够从它们的类外面被访问 与大多数的语言不同,一个 Python 函数,方法,或属性是私有还是公有,完全取决于它的名字。 如果一个 Python 函数,类方法,或属性的名字以两个下划线开始(但不是结束),它是私有的;其它所有的都是公有的。 Py
在很多时候,有些成员函数是在一个类内部才会被调用到,他们不应当被使用这个类的客户代码调用。例如,calculatePolar和calculateCartesianare会被访问函数调用到,但客户代码不应该直接调用他们(虽然不会造成伤害)。如果我们想保护这些函数不被调用到,我们就需要把他们声明为private,正如我们处理变量那样。所以一个完整的复数类的定义如下: class Complex {
问题内容: 我有一堂课。 在我的类方法中,我实例化该类,如下所示: 编译器将此代码转换为: 使用反射表明该类具有以下综合的构造函数: 由于该类是,因此编译器会将该构造函数添加到该类中,因此没有人可以实例化该类。但是很明显,该类应该能够实例化它,因此编译器添加了另一个包私有构造函数,后者又调用了私有构造函数。另外,由于package- private构造函数的名称中包含该名称,因此普通的Java代码
我在一个函数中有这样的代码块: 它获取一些数据,然后对数据运行验证()。 但是,我对数据的验证实际上也是异步的,因为它是根据一个json模式来验证数据的,而json模式位于一个独立的json文件中,所以它必须首先读取该文件。 我使用了一个承诺来读取文件内容,然后进行验证: 如何编辑此问题中的顶部代码块以解释if语句()中的异步函数?