!30 分程度でコーディング
とテスト
のタスクを完了する事が出来ました。
フィボナッチ数のアルゴリズムであれば、任せても良いと感じました。
※実際の業務では 業務知識やより複雑な条件があるため、こんなにうまくいかないと考えています
🌱 実装
1. フィボナッチ数を求めるプログラムの作成
src/fibonacci.ts
/** * 反復的なアプローチを使用してn番目のフィボナッチ数を計算します。 * * フィボナッチ数列は以下のように定義されます: * - F(0) = 0 * - F(1) = 1 * - F(n) = F(n-1) + F(n-2) (n > 1の場合) * * この実装は空間計算量O(1)、時間計算量O(n)を使用します。 * *@paramn - フィボナッチ数列の位置(非負の整数である必要があります) *@returns n番目のフィボナッチ数 *@throws{Error} nが負の数の場合 * *@example * ```typescript * fibonacci(0); // 0を返す * fibonacci(1); // 1を返す * fibonacci(5); // 5を返す * fibonacci(10); // 55を返す * ``` */exportfunctionfibonacci(n:number):number{if(n<0){thrownewError('Fibonacci sequence is not defined for negative numbers');}if(n<=1){return n;}let a=0;let b=1;for(let i=2; i<= n; i++){const temp= a+ b; a= b; b= temp;}return b;}
2. テストコードの作成
test/fibonacci.test.ts
import{ fibonacci}from'../src/fibonacci';describe('fibonacci',()=>{describe('エラーハンドリング',()=>{test('負の数に対してエラーを投げる',()=>{expect(()=>fibonacci(-1)).toThrow('Fibonacci sequence is not defined for negative numbers');expect(()=>fibonacci(-5)).toThrow('Fibonacci sequence is not defined for negative numbers');});});describe('基本ケース',()=>{test('fibonacci(0)は0を返す',()=>{expect(fibonacci(0)).toBe(0);});test('fibonacci(1)は1を返す',()=>{expect(fibonacci(1)).toBe(1);});});describe('反復的な計算',()=>{test('フィボナッチ数を正しく計算する',()=>{expect(fibonacci(2)).toBe(1);expect(fibonacci(3)).toBe(2);expect(fibonacci(4)).toBe(3);expect(fibonacci(5)).toBe(5);expect(fibonacci(6)).toBe(8);expect(fibonacci(7)).toBe(13);expect(fibonacci(8)).toBe(21);expect(fibonacci(9)).toBe(34);expect(fibonacci(10)).toBe(55);});test('大きなフィボナッチ数を処理する',()=>{expect(fibonacci(15)).toBe(610);expect(fibonacci(20)).toBe(6765);});});});
3. jest.config.js
jest.config.js
module.exports={preset:'ts-jest',testEnvironment:'node',testMatch:['<rootDir>/test/**/*.test.ts'],collectCoverageFrom:['src/**/*.ts','!src/**/*.d.ts',],coverageDirectory:'coverage',coverageReporters:['text','lcov','html'],};
4. package.json
package.json
{"name":"claude-code-ai-testing","version":"1.0.0","main":"index.js","directories":{"test":"test"},"scripts":{"test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","build":"tsc","build:watch":"tsc --watch"},"repository":{"type":"git","url":"git+https://github.com/aew2sbee/claude-code-ai-testing.git"},"keywords":[],"author":"","license":"ISC","bugs":{"url":"https://github.com/aew2sbee/claude-code-ai-testing/issues"},"homepage":"https://github.com/aew2sbee/claude-code-ai-testing#readme","description":"","devDependencies":{"@types/jest":"^30.0.0","jest":"^30.0.4","ts-jest":"^29.4.0","typescript":"^5.8.3"}}
5. tsconfig.json
tsconfig.json
{"compilerOptions":{"target":"es2020","module":"commonjs","lib":["es2020"],"outDir":"./dist","rootDir":"./src","strict":true,"esModuleInterop":true,"skipLibCheck":true,"forceConsistentCasingInFileNames":true,"declaration":true,"declarationMap":true,"sourceMap":true},"include":["src/**/*"],"exclude":["node_modules","dist","test"]}
🌱 テスト結果
1. 単体テストの結果
5 つのテストに対して全てのテストがpassed
しました!
$npmtest> claude-code-ai-testing@1.0.0test> jest PASS test/fibonacci.test.ts fibonacci エラーハンドリング √ 負の数に対してエラーを投げる(12 ms) 基本ケース √ fibonacci(0)は0を返す √ fibonacci(1)は1を返す 反復的な計算 √ フィボナッチ数を正しく計算する(1 ms) √ 大きなフィボナッチ数を処理する(1 ms)Test Suites:1 passed,1 totalTests:5 passed,5 totalSnapshots:0 totalTime:2.785 s, estimated3 sRan alltest suites.
2. カバレッジ結果
カバレッジ率が100%
になりました。
