【发布时间】:2018-09-01 06:41:06
【问题描述】:
我正在使用大型 AngularJS + PouchDB 代码库。我们使用 Protractor 进行端到端测试,但我们发现自己过于依赖端到端测试。这些速度很慢,并且经常间歇性地失败。
我们希望将尽可能多的测试迁移到单元测试和/或集成测试。我们有一个有效的 karma-jasmine 设置,我们用它来测试一些不与数据库交互的代码。我们想使用 Karma 来测试确实与数据库交互但不确定执行此操作的最佳方法的代码。
这是一个例子:
"use strict";
var FooService;
describe('The FooService', function () {
beforeEach(function () {
angular.mock.module('myApp');
});
beforeEach(angular.mock.inject(function (_FooService_) {
FooService = _FooService_;
}));
it('should be able to return all bars', function() {
let bars = FooService.getBars();
});
});
这失败是因为FooService.getBars() 方法调用了尚未初始化的PouchDB。
您是否有类似的代码库并使用单元和/或集成测试?如果有,您是如何解决这个问题的?
【问题讨论】:
-
与任何第三方 API 相同。嘲笑它。 *.com/questions/22591994/… 的可能重复项
-
对于正确的单元测试:模拟。对于集成测试,您可以轻松初始化 pouchdb,并使用本地(即文件系统支持)数据库运行它以进行测试。
-
谢谢@Flimzy。我知道模拟单元测试,但我主要对集成测试感兴趣。我已经初始化了 pouchdb,但不确定如何使用它返回的承诺。
标签: angularjs unit-testing integration-testing karma-jasmine pouchdb