テストケース練習:番外編①
仕様
hr.icon
レポート機能(通貨付き)
table:
銘柄 株数 価格 合計
IBM 1000 25 USD 25,000 USD
Novartis 400 150 CHF 60,000 CHF
総計 115,000 USD
為替レート
table:
変換元 変換先 レート
CHF USD 1.5
与えられた情報はこれだけ。
まぁレポートを算出するフィーチャを作ると考えます。
設計
hr.icon
code: model.ts
// 銘柄
class Symbol {}
class Currency {}
class StockQuote {
symbol: Symbol;
price: number; // 現在価格
currency: Currency;
}
class StockHolding {
symbol: Symbol
stock: number
}
フィーチャテストざっくり戦略
hr.icon
テスト観点洗い出し
保有している株情報を現在価格と合計値合わせて全て表示する
2つ以上の株情報の通貨が異なる場合でも、前株価格の合計値は指定した通貨で表示される
保有している株の現在価格を取得できないならエラーが返ってくる
対応してない通過を指定したらエラーが返ってくる
code: usecase.ts
interface StockReportDependencies {
repo: StockHoldingRepo;
quoteProvider: StockQuoteProvider;
exchangeProvider: ExchangeProvider;
}
// ユースケース関数
function reportStockHoldings(sumCurrency: string, deps: StockReportDependencies) {}