aws-sdk-mockを使ってもS3(にアクセスするAWS SDK)がモックに挿し変わらずに困り果ててました・・。
明示的にaws-sdkのパスを指定することで解決しました。
jestのテストコード
constawsMocker=require('aws-sdk-mock');// 【ここがポイント】 以下のようにaws-sdkのパスを明示的に指定する必要がありました。constpath=require('path');awsMocker.setSDK(path.resolve('node_modules/aws-sdk'));consttestee=require('テスト対象ファイルへのパス');// その他 略describe('S3の画像保存テスト',()=>{describe('正常時',()=>{it('putObjectを1回だけ実行する',asyncdone=>{letcalledCount=0;awsMocker.mock('S3','putObject',(params,callback)=>{calledCount++;callback(null,{"ETag":"00000000000000000000000000000000"});});awaittestee.putImage({"filename":"test.txt","file_base64":"YWJjZGVmZw=="});expect(calledCount).toBe(1);done();});});});
おそらく、aws-sdkへのパスが明示的に指定されないと、aws-sdk-mockさんは差し替え対象のaws-sdkを正しく特定できないのでしょう。
その結果、本物のS3のSDKが動いてしまったのだと思います。
地味なところで時間を使ってしまったのでした・・。