相关疑难解决方法(0)

使用MongoDB进行单元测试

我选择的数据库是MongoDB.我正在编写一个数据层API来从客户端应用程序中抽象实现细节 - 也就是说,我实际上提供了一个单独的公共接口(一个充当IDL的对象).

我正在以TDD的方式测试我的逻辑.在每个单元测试之前,@Before调用一个方法来创建数据库单例,之后,当测试完成时,@After调用一个方法来删除数据库.这有助于提高单元测试之间的独立性.

几乎所有的单元测试,即执行上下文查询,都需要事先发生某种插入逻辑.我的公共接口提供了一个插入方法 - 然而,使用此方法作为每个单元测试的前驱逻辑似乎是不正确的.

我真的需要某种模拟机制,但是,我对模拟框架没有多少经验,而且Google似乎没有返回任何可能与MongoDB一起使用的模拟框架.

其他人在这些情况下做了什么?也就是说,人们如何单元测试与数据库交互的代码?

此外,我的公共接口连接到外部配置文件中定义的数据库 - 使用此连接进行单元测试似乎不正确 - 再次,这种情况会受益于某种类型的模拟?

java junit unit-testing mongodb morphia

61
推荐指数
4
解决办法
6万
查看次数

如何测试与Firebase交互的服务?

从Firebase获取数据的惯例似乎是创建一个在内部使用AngularFire的服务类.然后,在您的应用程序的组件中,您可以注入并使用该服务.这使您可以在单元测试组件时轻松模拟服务.

但是,我仍然不清楚如何测试实际的服务本身.

举个例子,假设我todo list在Firebase中有一个节点,我有一个简单的服务来抓取所有的节点todos,如下所示:

import { Injectable } from '@angular/core';
import { AngularFire } from 'angularfire2';

@Injectable()
export class TodoService {
  constructor(private af: AngularFire) { }

  getAll(): FirebaseListObservable<any[]> {
    return this.af.database.list('todos');
  }
}
Run Code Online (Sandbox Code Playgroud)

您将如何测试此服务是否符合您的期望?

firebase firebase-realtime-database angularfire2 angular

3
推荐指数
1
解决办法
1965
查看次数