frisby.js发布正文内容语法

frisby.js post body content syntax

本文关键字:语法 正文 js 布正文 frisby      更新时间:2023-09-26

我有一个运行良好的UI和服务器数据交换,但我想开始用Frisby.js测试新的开发。UI有一个使用jQuery的JavaScript表单管理器。我的请求主体是一个JavaScript对象,它首先使用JSON.stringify.进行序列化

var msg = {form:"login",data{username:"elmer",password:"wabbit"}};
var json_msg = JSON.stringify(msg);

然后由jQuery:发送

$.ajax(
    url: baseUrl+"forms/"+call,
    data: { req: json_msg },
    type: "POST",
    success: function(msg){...

在服务器上接收到的原始正文内容如下所示:

req=%7B%22form%22%3A%22login%22%2C%22data%22%3A%7B%22username%22%3A%22elmer%22%2C%22password%22%3A%wabbit%22%7D%7D

由于这个原始正文内容是我的服务器所期望并成功使用的,我尝试了几种内容类型标题和内容格式的组合,但Frisby.js会阻塞它们或发送错误的正文。

注意:1.首先必须序列化消息(JavaScript对象)。2.那么req=[serialized_message]必须是URI编码的。使用jQuery.ajax()可以很容易地执行这两个步骤,但看起来在Frisby.js 上不可能

我尝试过:使用未序列化的JavaScript对象,使用序列化的JavaScript对象和序列化和URI编码的文本(此处显示)

msg = "%7B%22form%22%3A%22login%22%2C%22data%22%3A%7B%22username%22%3A%22elmer%22%2C%22password%22%3A%wabbit%22%7D%7D";
frisby.create('Login on HHHLEG web site.')
  .addHeader('X-Requested-With', 'XMLHttpRequest')
  .post('http://hhhleg/forms/login', req=msg )

当上面的代码到达服务器时,它的正文中什么都没有。我怀疑存在一些简单的语法问题或内容类型问题,或者Frisby.js无法执行序列化和URI编码的组合,因为它会阻塞所涉及的字符。

Frisby可能需要一个JSON编码的请求体,而不是jQuery的默认application/x-www-form-urlencoded

尝试设置contentType:

$.ajax({
    url: baseUrl+"forms/"+call,
    data: { req: json_msg },
    type: "POST",
    contentType: "application/json",
    // other properties...
});

在类似的问题中,我可以帮助以下人员:
1.创建具有所需名称的变量(在您的情况下为"req"),并将其与消息内容一起发送
2.不使用普通的frisby-js后构造函数,而是使用以下内容:

...
    frisby.create('Send valid data in post')
        .post(YourPath,
            req, //before it we need to assign to it value by
                 //"var req = msg" or any byte array
            {
                json: false,
                headers: {
                    "content-type": "application/octet-stream",
                    "Authorization": your.authToken //if needed
                }
            })
        .expectStatus(200)
...

在我的案例中,我尝试过发送图像字节数组,但在URLencoded消息和JSON表单发送请求中遇到了类似的问题
如果没有帮助或似乎不是你的情况,你可以访问https://github.com/vlucas/frisby/tree/legacy-0.x/examples有关POST请求和数据发送的更多示例,请参阅第页。