Javascript 如何使用Cypress上传txt文件进行API测试-XMLHTTPRequest?
我正在尝试测试一个端点,它将上传一个文件,并在cypress中给出200个响应状态代码。根据一些研究,cy.request不能用于上载多部分/表单数据的文件,因此我们需要使用XMLHttp来上载此类文件。我创建了下面的文件来测试api,但它不起作用。有人能帮我一下我的代码出了什么问题吗?多谢各位 在support/commands.ts下添加了下面的代码(我需要一个头从auth端点传递令牌) 要调用multipartFormRequest的测试文件:Javascript 如何使用Cypress上传txt文件进行API测试-XMLHTTPRequest?,javascript,typescript,file-upload,blob,cypress,Javascript,Typescript,File Upload,Blob,Cypress,我正在尝试测试一个端点,它将上传一个文件,并在cypress中给出200个响应状态代码。根据一些研究,cy.request不能用于上载多部分/表单数据的文件,因此我们需要使用XMLHttp来上载此类文件。我创建了下面的文件来测试api,但它不起作用。有人能帮我一下我的代码出了什么问题吗?多谢各位 在support/commands.ts下添加了下面的代码(我需要一个头从auth端点传递令牌) 要调用multipartFormRequest的测试文件: const fileName = 'test
const fileName = 'test_file.txt';
const method = 'POST';
const URL = "https://fakeurl.com/upload-file";
const headers = api.headersWithAuth(`${authToken}`);
const fileType = "application/text";
cy.fixture(fileName, 'binary').then((res) => {
const blob = Cypress.Blob.binaryStringToBlob(res, fileType);
const formData = new FormData();
formData.append('file', blob, fileName);
cy.multipartFormRequest(method, URL, headers, formData, function (response) {
expect(response.status).to.equal(200);
})
})
我收到以下错误消息:-
现在,我得到的状态代码为0。使用
const blob=Cypress.blob.binaryStringToBlob(res,fileType);
然后拆下。然后()
看
历史
版本5.0.0
更改:
arrayBufferToBlob、base64StringToBlob、binaryStringToBlob和dataURLToBlob方法的返回类型从Promise
更改为Blob
改为尝试fetch
。还要检查cors,检查控制台日志,检查开发工具中的“网络”选项卡。@John,我正在使用cypress运行,所以我在开发工具的日志中没有看到任何错误。有没有我可以参考的fetch示例?这将至少消除blob函数错误。然而,现在我得到了不同事件状态的响应。知道这里怎么了吗@hiram
const fileName = 'test_file.txt';
const method = 'POST';
const URL = "https://fakeurl.com/upload-file";
const headers = api.headersWithAuth(`${authToken}`);
const fileType = "application/text";
cy.fixture(fileName, 'binary').then((res) => {
const blob = Cypress.Blob.binaryStringToBlob(res, fileType);
const formData = new FormData();
formData.append('file', blob, fileName);
cy.multipartFormRequest(method, URL, headers, formData, function (response) {
expect(response.status).to.equal(200);
})
})