unit-testing - typescript 中的Sinon stub 私有(private)变量?

标签 unit-testing typescript mocha.js sinon stubbing

我想在一个类中 stub 一个私有(private)变量

class IPC {
    private publisher: redis.RedisClient;
    constructor() {
        this.publisher = redis.createClient();
    }

    publish(text: string) {
        const msg = {
            text: text
        };

        this.publisher.publish('hello', JSON.stringify(msg));
    }
}

如何 stub 私有(private)变量 publisher ,在这个类里面?
所以我可以测试如下所示的代码
it('should return text object', () => {
    const ipc = sinon.createStubInstance(IPC);
    ipc.publish('world!');

    // this will throw error, because ipc.publisher is undefined
    assert.deepStrictEqual({
        text: 'world!'
    }, ipc.publisher.getCall(0).args[0]) 
})

最佳答案

您可以使用类型断言来访问私有(private)变量。像:

(ipc as any).publisher

关于unit-testing - typescript 中的Sinon stub 私有(private)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42390900/

相关文章:

c# - Selenium - 'ITimeouts.ImplicitlyWait(TimeSpan)' 已过时

java - 如何对函数进行单元测试,使其输入根本不会改变函数的行为?

c# - nunit 和 web.config appSettings

javascript - 在流程 : test whether variables got set 中编写规范

javascript - 在 Chai 断言库中,当我们已经有了 "assert.equal()"和 "assert.deepEqual()"时, "assert.strictEqual()"有什么用?

node.js - 如何从脚本访问 mocha 的 json 报告?

unit-testing - 如何编写用于测试 Rust 模块的函数 stub ?

javascript - Typescript 继承的父类中的参数是什么?

typescript - 找不到模块 : Error: Cannot resolve module '@types/lodash'

javascript - 仅当对象的属性发生更改时,Angular 才更新 View