Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 西农:“我的名字是什么?”;试图包装已包装的createMessage";_Javascript_Testing_Sinon - Fatal编程技术网

Javascript 西农:“我的名字是什么?”;试图包装已包装的createMessage";

Javascript 西农:“我的名字是什么?”;试图包装已包装的createMessage";,javascript,testing,sinon,Javascript,Testing,Sinon,首先,我浏览了所有与此主题相关的其他帖子,并实现了Sinon.sandbox()。不幸的是,我仍然收到以下错误: TypeError:试图包装已包装的createMessage 请注意,我使用Ava进行测试,在本例中,我将其设置为以串行模式而不是并行模式运行 // Load modules import Queue from '../lib/queue'; import test from 'ava'; import Sinon from 'sinon'; import Proxyquire

首先,我浏览了所有与此主题相关的其他帖子,并实现了
Sinon.sandbox()
。不幸的是,我仍然收到以下错误:

TypeError:试图包装已包装的createMessage

请注意,我使用Ava进行测试,在本例中,我将其设置为以串行模式而不是并行模式运行

// Load modules

import Queue from '../lib/queue';

import test from 'ava';
import Sinon from 'sinon';
import Proxyquire from 'proxyquire';

// Globals

const FAKE_APPOINTMENT_ID = 'ab9e9495-fdbf-4607-8f57-01c6e91bd8f5';

let push;
let queueStub;
let sandbox;


// Test setup

test.beforeEach(() => {

    // create the sinon sandbox
    sandbox = Sinon.sandbox.create();

    // stub the queue module
    queueStub = sandbox.stub(Queue.prototype);

    // inject the stub
    push = Proxyquire('../lib/push', {
        './queue': queueStub
    });
});


test.afterEach(t => {

    sandbox.restore();
});

// Tests

test.only('sends an appointment approved push notification', async t => {

    await push.appointmentApproved(FAKE_APPOINTMENT_ID);

    t.true(queueStub.createMessage.calledOnce);
});


test.only('sends an appointment cancelled push notification', async t => {

    await push.appointmentCancelled(FAKE_APPOINTMENT_ID);

    t.true(queueStub.createMessage.calledOnce);
});


test.only('sends an appointment updated push notification', async t => {

    await push.appointmentUpdated(FAKE_APPOINTMENT_ID);

    t.true(queueStub.createMessage.calledOnce);
});
我还尝试将每个之前的
切换到
之前的
,当3个测试中的第一个通过时,最后两个测试完成,因为存根的调用计数似乎从未重置。也许我误解了
restore()


谢谢

试图复制,但如果
queue.js
导出一个类,然后用
push.js
的存根原型替换它,它是如何在那里实例化的?@robertklep也许这就是我缺少的。是否有一种合适的方法来存根我缺少的类?从我所看到的,如果在存根
Queue.prototype
后确保
需要('./push')
,则根本不需要
proxyquire
。我假设您在
push.js
中的某个地方创建了
newqueue