Loopback模型的单元测试

7

我有一个名为Student的Loopback API模型。

如何编写单元测试以测试Student模型的节点API方法而不调用REST API?我找不到任何文档或示例来测试节点API本身。

请问有人可以帮忙吗?


1
对于背景:Strongloop文档似乎没有解释测试,而搜索“strongloopjs test”只会产生像这篇文章(https://strongloop.com/strongblog/how-to-test-an-api-with-node-js/)一样的文章:使用HTTP API测试应用程序,而不是对模型本身进行单元测试。 - Alan Plum
1个回答

7

使用count方法进行测试的示例

// With this test file located in ./test/thistest.js

var app = require('../server');

describe('Student node api', function(){
  it('counts initially 0 student', function(cb){
      app.models.Student.count({}, function(err, count){
        assert.deepEqual(count, 0);
      });
  });
});

这样你就可以测试node API,而无需调用REST API。
但是对于内置方法,这些内容已经被strongloop测试过了,所以测试node API可能没有太大意义。但是对于远程(自定义)方法,仍然很有意义。
编辑: 之所以不明确采用这种方法,是因为最终你需要测试完整的REST API,以确保不仅node API按预期工作,而且ACL正确配置、返回代码等也是如此。因此,最终你将为同一事物编写2个不同的测试,这是浪费时间的。(除非你喜欢编写测试 :))

谢谢您的回答,但是上面给出的代码存在一个问题。为了进行单元测试,我不想使用我的实际数据库,而是想使用内存数据库。那么,在这种情况下,如何创建内存数据?如何在内存数据库中添加用户、访问令牌? 此外,我想使用beforeEach钩子在Student表中插入记录。这样我就可以得到一些计数值。希望这更清楚地解释了我的问题。 - Ajay Kumar
无法从问题中猜测,但创建内存数据库非常容易(请参见此处)。而且,无论您使用内存还是真实的数据库,它都是透明的。 - Overdrivr
要添加用户、访问令牌等,只需使用我提供的链接中记录的节点API即可。这里是链接:http://apidocs.strongloop.com/ - Overdrivr
如果你有疑问,你可以在测试中使用内存数据库,并在生产环境中切换到真正的数据库(这在这里有记录)。 - Overdrivr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接