我想將 pdf 檔案作為 POST 請求發送。
API 接受@RequestPart和@RequestParam:
@RequestPart("file") MultipartFile file;
@RequestParam(value = "document-types", required = false) Set<String> documentTypes;
我試圖這樣做:
it('test', () => {
cy.fixture(pdfFilePath, "binary").then(file => {
const data = new FormData();
data.set('file', file);
data.set('document-types', 'New Type');
cy.request({
method: "POST",
url: '/api/v4/documents',
headers: {
accepts: "multipart/form-data",
authorization: authString
},
body: data
}).then((response) => {
expect(response.status).to.eq(200)
});
});
});
當我運行它時,我得到:
Status: 400 - Bad Request
在 Cypress 中,我看到發送的請求中的正文是空的:
Body: {}

當我嘗試除錯代碼時,我看到data如您在附加螢屏截圖中看到的那樣發送為空:

我想知道為什么,因為我嘗試data通過在上面螢屏截圖的第 154 和 155 行中執行這些步驟來設定:
data.set('file', file);
data.set('document-types', 'New Type');
我在這里錯過了什么?
賽普拉斯版本: 9.0.0
uj5u.com熱心網友回復:
它不是空的,你必須利用data.entries()來查看內容。
似乎 cy.request() 函式試圖將 FormData 物件轉換為錯誤的 JSON 物件。
從cypress的檔案中,您還應該使用該form: true設定。
參考:
- https://developer.mozilla.org/en-US/docs/Web/API/FormData
- https://xhr.spec.whatwg.org/#interface-formdata
uj5u.com熱心網友回復:
你必須附加formData,下面的代碼只是一個例子:
const formData = new FormData()
formData.append('file', files[0])
formData.append('name', files[0].name)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/357860.html
標籤:javascript 打字稿 自动化测试 柏
上一篇:使用Jest和@testing-library/react-hooks在TypeScript中單元測驗自定義ReactHook
