Sinon: stub readonly property throw "Não é possível stub propriedade inexistente"

Criado em 5 jun. 2020  ·  3Comentários  ·  Fonte: sinonjs/sinon

Descreva o erro

  • Versão da biblioteca: 9.0.2

Reproduzir

import * as sinon from "sinon";
class B {
    public readonly a: string;
    public get(): void {}
}

const bStub = sinon.createStubInstance(B);
sinon.stub(bStub , "a").value("test");

// let b = new B();
// sinon.stub(b, "a").value("test");

Comportamento esperado
toco corretamente.

Há um problema antigo mencionando o mesmo problema, mas está fechado com um comentário que não é muito útil para mim. https://github.com/sinonjs/sinon/issues/829

Todos 3 comentários

No entanto, atribuindo valor antecipadamente à propriedade, o stub funcionará. Mas eu realmente não quero invocar o construtor, pois é muito complicado.

import * as sinon from "sinon";

class B {
    public readonly a: string;
    public get(): void {}
    constructor(aa: string) {
        this.a = aa;
    }
}

// const bStub = sinon.createStubInstance(B);
let b = new B("t");
sinon.stub(b, "a").value("test");
console.log(b.a);

saída: teste

Atualmente trabalhando com a atribuição direta ao objeto stub.

import * as sinon from "sinon";

class B {
    public readonly a: string;
    public get(): void {}
    constructor(aa: string) {
        this.a = aa;
    }
}

const bStub = sinon.createStubInstance(B);
(bStub as any).a = "test";
console.log(b.a);

saída: teste

Tomamos a decisão consciente de não permitir o stubbing de propriedades inexistentes, pois isso criaria alguns cenários muito confusos.

O código enviado não se parece com JavaScript para mim, não sei como executá-lo.

Crie um novo problema e preencha o modelo para poupar tempo a todos.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

kbirger picture kbirger  ·  3Comentários

stephanwlee picture stephanwlee  ·  3Comentários

akdor1154 picture akdor1154  ·  4Comentários

zimtsui picture zimtsui  ·  3Comentários

OscarF picture OscarF  ·  4Comentários