Sinon: stub propiedad de solo lectura throw "No se puede stub propiedad inexistente"

Creado en 5 jun. 2020  ·  3Comentarios  ·  Fuente: sinonjs/sinon

Describa el error

  • Versión de la biblioteca: 9.0.2

Reproducir

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");

Comportamiento esperado
talón correctamente.

Hay un problema anterior que menciona el mismo problema, pero se cierra con un comentario que no es muy útil para mí. https://github.com/sinonjs/sinon/issues/829

Todos 3 comentarios

Sin embargo, asignando valor de antemano a la propiedad, entonces el stub funcionará. Pero realmente no quiero invocar al constructor ya que es bastante 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);

salida: prueba

Actualmente trabajando con la asignación directa al 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);

salida: prueba

Hemos tomado la decisión consciente de no permitir el stubing de propiedades inexistentes, ya que eso generaría algunos escenarios muy confusos.

El código enviado no me parece JavaScript, no sé cómo ejecutarlo.

Cree un problema nuevo y complete la plantilla para ahorrar tiempo a todos.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

pavelkornev picture pavelkornev  ·  4Comentarios

JakobJingleheimer picture JakobJingleheimer  ·  3Comentarios

fearphage picture fearphage  ·  3Comentarios

OscarF picture OscarF  ·  4Comentarios

byohay picture byohay  ·  3Comentarios