A stub replaces an outside dependency with a predictable in-memory value.

stub A stub implements the same small interface as a dependency, but it returns fixed data for the test.

Stubbed Dependency

price
stub.ts
Replay: real traced execution (multi-file project)
type PriceSource = {
    getPrice(sku: string): number;
};

function totalFor(source: PriceSource, sku: string, quantity: number): number {
    return source.getPrice(sku) * quantity;
}

const price: number = 250;
const stubSource: PriceSource = {
    getPrice: () => price,
};

const total: number = totalFor(stubSource, "book", 3);

console.log(`total=${total}`);
type PriceSource = {
    getPrice(sku: string): number;
};

function totalFor(source: PriceSource, sku: string, quantity: number): number {
    return source.getPrice(sku) * quantity;
}

const price: number = 400;
const stubSource: PriceSource = {
    getPrice: () => price,
};

const total: number = totalFor(stubSource, "book", 3);

console.log(`total=${total}`);
  1. price ← 250, stubSource ← [object Object]

    6    return source.getPrice(sku) * quantity;7}89const price→ 250: number = 250;  //@price=40010const stubSource→ [object Object]: PriceSource = {11    getPrice: () => price,12};1314const total: number = totalFor(stubSource[object Object], "book", 3);
  2. function totalFor(source: PriceSource, sku: string, quantity: number):…

    2    getPrice(sku: string): number;3};45function totalFor(source[object Object]: PriceSource, skubook: string, quantity3: number): number {6    return source.getPrice(sku) * quantity3;7}
  3. total ← 750

    11    getPrice: () => price,12};1314const total→ 750: number = totalFor(stubSource[object Object], "book", 3);1516console.log(`total=${total750}`);
    outputtotal=750
  1. price ← 400, stubSource ← [object Object]

    6    return source.getPrice(sku) * quantity;7}89const price→ 400: number = 400;10const stubSource→ [object Object]: PriceSource = {11    getPrice: () => price,12};1314const total: number = totalFor(stubSource[object Object], "book", 3);
  2. function totalFor(source: PriceSource, sku: string, quantity: number):…

    2    getPrice(sku: string): number;3};45function totalFor(source[object Object]: PriceSource, skubook: string, quantity3: number): number {6    return source.getPrice(sku) * quantity3;7}
  3. total ← 1200

    11    getPrice: () => price,12};1314const total→ 1200: number = totalFor(stubSource[object Object], "book", 3);1516console.log(`total=${total1200}`);
    outputtotal=1200