我在loopback-testing的帮助下为我的strongloop API代码编写了一个测试驱动开发。
这里他们没有关于此的任何详细文档,所以我坚持使用API调用传递参数的案例
示例我有以下案例,
Method : PUT
URL : /api/admin/vineyard/<vineyard_id>
我需要使用此URL传递以下参数
1. 'vineyard_id' is a id of vine, it should be an integer .
2. in header = 'token'
3. in body = '{'name':'tastyWine','price':200}'
如何使用此API传递这三个参数?
如果只有两种类型的参数
,我可以轻松处理示例:
Method : POST
`/api/user/members/<test_username>/auth'`
arguments : test_username and password
我可以这样处理,
lt.describe.whenCalledRemotely('POST',
'/api/user/members/'+test_username+'/auth', {
'password': test_passwords
},
但是我如何处理上述情况,非常感谢您对此示例的回答。
答案 0 :(得分:3)
我不完全确定您的具体问题是什么,但我会尝试遍历您需要的所有内容。
我假设您正在为模型使用预定义的prototype.updateAttributes()方法,如here所述。
接下来的假设是您希望使用内置身份验证和授权来允许用户调用此方法。鉴于这种假设,您需要在测试代码中使用类似的东西:
var vineyard_id = 123; //the id of the test item you want to change
var testUser = {email: 'test@test.com',password: 'test'};
lt.describe.whenCalledByUser(testUser, 'PUT', '/api/admin/vineyard/'+vineyard_id,
{
'name':'tastyWine',
'price':200
},
function () {
it('should update the record and return ok', function() {
assert.equal(this.res.statusCode, 200);
});
}
);
如果您使用开箱即用的用户模型,那么您应该没问题,但如果您像通常那样扩展模型,您可能需要在测试文件的早期版本中使用这样的内容:
lt.beforeEach.withUserModel('user');
另外,请注意一些(目前尚未完成的)更新,以便更好地处理内置模型扩展程序:Suggestions #56,Add support for non-default models #57和givenLoggedInUser() function throws error #59。