当前位置: 首页 > 知识库问答 >
问题:

为什么sinon忽略了我对另一个函数的调用?

梁季
2023-03-14

我在我的单元测试中使用了sinon间谍。我正在测试的函数调用了一次间谍函数,但sinon坚持说它根本没有调用它。

正在测试的代码:

const blank = ' '

const displayBoard = (board) => {
    console.log('+-+-+-+-+-+-+-+-+-+');
    console.log('| |0|1|2|3|4|5|6|7|')
    console.log('+-+-+-+-+-+-+-+-+-+');
    for (let row = board.length - 1; row > -1; row--) {
        let r = `|${row}|`
        for (let column = 0; column < 8; column++) {
            r += board[row][column][1] + '|';
        }
        console.log(r);
        console.log('+-+-+-+-+-+-+-+-+-+');
    }
};

const initialise = () => {
    let board = [];
    board[0] = [['b', 'w'], ['w', blank], ['b', 'w'], ['w', blank], ['b', 'w'], ['w', blank], ['b', 'w'], ['w', blank]];
    board[1] = [['w', blank], ['b', 'w'], ['w', blank], ['b', 'w'], ['w', blank], ['b', 'w'], ['w', blank], ['b', 'w']];
    board[2] = [['b', 'w'], ['w', blank], ['b', 'w'], ['w', blank], ['b', 'w'], ['w', blank], ['b', 'w'], ['w', blank]];
    board[3] = [['w', blank], ['b', blank], ['w', blank], ['b', blank], ['w', blank], ['b', blank], ['w', blank], ['b', blank]];
    board[4] = [['b', blank], ['w', blank], ['b', blank], ['w', blank], ['b', blank], ['w', blank], ['b', blank], ['w', blank]];
    board[5] = [['w', blank], ['b', 'b'], ['w', blank], ['b', 'b'], ['w', blank], ['b', 'b'], ['w', blank], ['b', 'b']];
    board[6] = [['b', 'b'], ['w', blank], ['b', 'b'], ['w', blank], ['b', 'b'], ['w', blank], ['b', 'b'], ['w', blank],];
    board[7] = [['w', blank], ['b', 'b'], ['w', blank], ['b', 'b'], ['w', blank], ['b', 'b'], ['w', blank], ['b', 'b']];
    displayBoard(board);
    return board;
};

module.exports = { initialise, displayBoard };

还有我的单元测试:

const draughts = require('../src/draughts');
const mocha = require('mocha');
const chai = require('chai');
const sinon = require('sinon');

const expect = chai.expect;

describe('draughts', ()=>{
    it('should initialise board', ()=>{
        result = draughts.initialise();
        expect(result).to.be.an('array');
    })
    it('should spy the display method', ()=>{
        let spy = sinon.spy(draughts, 'displayBoard');
        draughts.initialise();
        sinon.assert.calledOnce(spy);
    })
});

来自西农的消息:

    < li>draughts应检测显示方法:AssertError:预期displayBoard将被调用一次,但在object . assert .[as called once](node _ modules \ sinon \ lib \ sinon \ assert . js:93:17)的fail assertion(node _ modules \ sinon \ lib \ sinon \ assert . js:67:25)的object . assert .[as called once](node _ modules \ sinon \ lib \ sinon \ assert . js:93:17)处被调用了0次。(test \ draughts . test . js:16:22)at processImmediate(internal/timers . js:461:21)

共有1个答案

公西凯捷
2023-03-14

将draughts实现更改为类似这样的内容。

const draughts  = { initialise, displayBoard };
module.exports = draughts;

然后在初始化函数中,您可以使用< code > draughts . display board(board)调用displayBoard

这样,中国间谍就可以工作了。

 类似资料:
  • 问题内容: 这是从CruiseControl执行时得到的: 同时,从命令行启动它可以提供正确的结果。为什么要进入这个?为什么忽略了我?我该如何解决? 我不知道从CC启动when 的值是什么。我真的很想获得这些信息,但我不知道如何。CC本身是从用户开始与该用户给我(这是CentOS的5.4): 问题答案: 假设您有一台linux机器。 看一下,这是一个符号链接。查看此符号链接的目标位置(在我的情况下

  • 根据我所读到的内容,这是我执行依赖顺序所需要的全部内容。 然后我构建了所有的东西,设置了我的断点,并启动了应用程序。我希望在任何依赖bean之前到达“configData”bean中的断点。事情不是这样的。第一个断点在一个依赖bean的“init”方法中。 然后我更改了“log4j.xml”,将“debug”设置为“org.springframework”的日志级别,并重新运行测试。断点行为是相同

  • 所以我在用摩卡酵素Sinon测试React app。我试图用if语句测试一个函数,其中有一个对另一个函数的调用。我的目标是输入if语句,但是存根第二个函数调用。代码如下: 所以我想输入if语句,但不调用getUsers()函数。我该怎么做?我正在监视SearchChange(),如下所示: 期待听到,谢谢!

  • 我在JMeter中创建了一个脚本,它从CSV获取登录凭据。 用户名:pshah 密码:欢迎 当我执行脚本时,我可以在POST中看到值: 用户名:pshah 但密码:欢迎 我想知道原因”

  • 我正在编写一个不和谐机器人,在私人服务器中使用,只是为了混日子。这是我第一次使用java。我正在使用不和谐JDA库来编码机器人。然而,我认为这不是主要问题。 对于如何从我创建的单独类中的特定方法中提取输出,我感到困惑。 我试图从一个名为Color.java的单独类中的公共String方法中拉出一个String到一个名为Commands.java.的文件中。 这是我的命令代码。JAVA这不是主文件,

  • 我试图遵循这个例子:https://www.alexjamesbrown.com/blog/development/stubbing-middleware-testing-express-supertest/ 但sinon存根似乎没有执行包装的代码。我已经看到了很多关于这个问题的堆栈溢出帖子,但没有一个答案可以帮助我弄清楚我做错了什么。每当我运行测试时,我都会收到以下错误: 0 次通过(42 毫秒