こんにちは、私は書き込むモジュールのためにJestでいくつかのユニットテストを書こうとしていますが、現在固執しています。ユニットテストで関数が呼び出されたかどうかを確認してください
export const submitOrder = async (body, key) => {
const clientRepo = new ClientRepository(db)
const companyRepo = new CompanyRepository(db)
const company = await getCompanyByKey(
companyRepo,
key
);
const client = await createClient(
clientRepo,
body
);
await addClientToCompany(
companyRepo,
client.id,
company.id
);
.. More things
}
Iは容易モックリポジトリをダウン渡すことによって(getCompanyByKey
、createClient
& addClientToCompany
)の各機能をテストすることができます。
しかし、submitOrder
関数の "flow"を、私のリポジトリ関数が呼び出されたかどうかを調べることによってテストしたいと思います。しかし、私はそれぞれのリポジトリのインスタンスが必要になります。私はsubmitOrder
の機能までインスタンス化しません。
私のユニットテストの機能と似たようなものです。
jest.mock('../repositories/ClientRepository');
jest.mock('../repositories/CompanyRepository');
test('should be able to submit an order', async() => {
const apiKey = 'mocked-super-key';
const body = getMockData();
const result = await submitOrder(body, apiKey);
expect(result).toMatchSnapshot();
expect(CompanyRepository.findByKey).toHaveBeenCalled();
expect(ClientRepository.create).toHaveBeenCalled();
expect(CompanyRepository.addClient).toHaveBeenCalled();
});
あなたは私のリポジトリが呼び出された場合、私はテストする方法の任意のヒントを持っていますか?
確かに、私はあなたを理解していると思います。何かのように: 'container.register( 'companyRepository'、new CompanyRepository())'? テストスイートで同じですが 'container.register( 'companyRepository'、新しいMockCompanyRepository())を実行すると、私の疑似文を上書きしませんか? – mertje
私は、container.register( 'companyRepository'、新しいCompanyRepository())がどこで起こるかということについて、矛盾した前提を作っていると思います。テスト中に決して実行されない行です。 –
そう、私はいくつかの設定ファイルが依存関係を必要とし、どの環境(生産とテスト)を指しているのでしょうか? – mertje