我正在使用 supertest 和 mocha 对 strongloop/loopback API 进行一些测试。标准端点之一是模型/更新。Update 实际上是PersistedModel.updateAll的一种形式,它接受查询,然后发布到与查询匹配的所有条目。这是资源管理器中成功请求的图片:
请注意,请求 URL 主要只是一个查询字符串,它返回 204。我从 superagent文档中知道,您可以通过帖子提交查询。但是,在我的测试中复制它时我遇到了很多麻烦。这是我的要求声明:
var request = require('supertest');
var app = require('../server');
var assert = require('chai').assert;
var chance = require('chance').Chance();
这是我的测试
describe('/api/Points/update', function(){
var updatedZip = "60000";
it('should grab a Point for a before reference', function(done) {
json('get', '/api/Points/' +addID )
.end(function(err, res) {
assert.equal(res.body.zipcode, addZip, 'unexpected value for zip');
done();
});
});
it('should update the Point w/ a new zipcode', function(done) {
var where = {"zipcode": "60035"};
var data ={"zipcode": updatedZip};
request(app)
.post('/api/Points/update')
.query({"where": {"zipcode": "60035"}})
.send({
data : data
})
.end(function(err, res) {
assert.equal(res.status, 204, 'update didnt take');
done();
});
});
it('should check to see that the Point was updated', function(done) {
json('get', '/api/Points/' +addID )
.end(function(err, res) {
assert.equal(res.body.zipcode, updatedZip, 'updated zip was not applied');
done();
});
});
第一个测试通过,这意味着它返回了 204 作为请求的状态,但是它失败了第二个测试,这意味着即使它发现查询可以接受,它实际上并没有应用更新。我尝试了许多不同的配方,但都没有奏效。请让我知道我怎么可能模拟这个!在此先感谢您的帮助!