-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Dressca-Consumer]フロントエンドの自動テストサンプルを拡充する #1482
Comments
下記のようなテストを実装すると、「カートの取得に失敗しました。」のメッセージをうまく取得できない。 NotificationToastコンポーネントがmountしているBasketViewのtemplateではなくApp.vueのtemplateにいるため。 App.vueをmountしてから買い物かご画面に遷移するようにしなければ確認できなさそう。 describe('異常系', () => {
beforeAll((): void => {
getBasketItemsMock.mockRejectedValue(new ServerError('ServerError'));
});
it('サーバーエラー', async () => {
// Arrange
const pinia = createPinia();
setActivePinia(pinia);
const customErrorHandler = createCustomErrorHandler();
const wrapper = mount(BasketView, {
global: { plugins: [pinia, router, customErrorHandler] },
});
// Act
await flushPromises();
// Assert
expect(wrapper.html()).toContain('カートの取得に失敗しました。');
});
}); notificationStoreの中身をassetすれば確認はできるが、ユーザー目線のテストとしてはUIをテストしたのであまりよくない。 |
巻き上げ1ファイル内でmockのふるまいを変更する場合は、
|
異常系下記のように想定されるErrorを返却することでモックできる。 getBasketItemsMock.mockRejectedValue(new ServerError('ServerError')); ただし、axiosによるAPIのレスポンスをモックしてしまうので、axiosのinterceptorの挙動(下記の箇所)はVitestのモックではテストできない。 if (error.response.status === 500) {
return Promise.reject(new ServerError('Server Error', error));
} |
言語設定(多言語対応)vue-i18n を導入したところ、
言語設定をjaに変更してからアプリをマウントすると動作する。 i18n.global.locale.value = 'ja'; 下記で書き換えるパターンも出てくるが、うまく動かない(英語になる)
|
AxiosError のモック
const problem = createProblemDetails({
exceptionId: 'serverError',
status: 500,
});
const error = createAxiosError(problem);
getBasketItemsMock.mockRejectedValue(new ServerError('message', error)); function createAxiosError(problemDetails: ProblemDetails): AxiosError {
const error = new AxiosError('', '', undefined, null, {
status: problemDetails.status,
statusText: '',
headers: {},
config: {
headers: new AxiosHeaders({
'Content-Type': 'application/json',
}),
},
data: {
detail: problemDetails.detail,
exceptionId: problemDetails.exceptionId,
exceptionValues: problemDetails.exceptionValues,
instance: problemDetails.instance,
status: problemDetails.status,
title: problemDetails.title,
type: problemDetails.type,
},
});
return error;
} mockモードの動作mockモードでも特にAxiosErrorを詰めていないので、 |
概要
DressccaのConsumerアプリについて、フロントエンドの自動テストのサンプルを拡充する。
2025/1/24 時点
v 1.0 時点では実装なし。
拡充したい内容
完了条件
ここにこの Issue の完了条件を箇条書きで記載します。
The text was updated successfully, but these errors were encountered: