我试图模拟我的类的方法的返回值并继续收到此错误:
不正确对测试双重验证不满意。通缉: - 用
(true)
打电话。但是没有调用双重调用。
这是我的测试代码:
// Imports for unit testing
const tap = require('tap');
const Subject = require('../src/iTunesClient.js');
const td = require('testdouble');
let reqJson;
// Ensure the iTunes class methods are called
tap.test('iTunesClient class methods function as intended', (t) => {
t.beforeEach((ready) => {
reqJson = td.replace('../src/reqJson.js');
ready();
});
t.afterEach((ready) => {
td.reset();
ready();
});
t.test('iTunesClient.getData', (assert) => {
const callback = td.function();
const subject = new Subject();
subject.setTerm('abc 123');
subject.setURL();
td.when(reqJson.get(td.callback)).thenCallback(true);
subject.getData(callback);
td.verify(callback(true));
assert.end();
});
t.end();
});
具体来说,这一行与我的问题有关:
td.verify(callback(true));
如何为true
伪造reqJson.get()
的回调值?目前,Subject.geData()
是iTunesClient
类的一种方法,它调用另一个文件reqJson.js
来使用其导出的get()
方法。
答案 0 :(得分:0)
从您的示例中说出来有点难,但在致电iTunesClient
之前,您似乎需要td.replace
。在这种情况下,将需要真正的reqJson
模块并在第3行缓存。
您需要尽早致电td.replace
以避免这种情况,例如在需要tap
和iTunesClient
之间。
答案 1 :(得分:0)
我想更新这个问题,因为我最近解决了这个问题。基本上,我有两个问题:
第1项的每testdouble documentation次数:
当传递td.matchers.anything()时,在确定调用是否满足存根时,对该测试double函数的任何调用都将忽略该参数。
因此,我调整了我的代码行如下:
之前: td.when(reqJson.get(td.callback)).thenCallback(true);
之后: td.when(reqJson.get(td.matchers.anything(), td.callback)).thenCallback(null, null, null);