我有一个模块,在其配置中使用了我需要模拟的提供程序。
provider 本身具有register
接受 2 个参数$get
的函数和返回一个对象的函数,但这并不重要(我认为),因为无论如何我都会嘲笑它。以防万一这里是整个提供商
模块使用这样的提供者:
angular.module('replenishment').config(configureReplenishmentColumnDef);
configureReplenishmentColumnDef.$inject = ['columnDefProvider'];
function configureReplenishmentColumnDef(columnDefProvider) {
let config = {
matchWhen: ((schema)=> _.get(schema, 'format') === 'replenishment'),
$get: replenishmentColDef
};
columnDefProvider.register(config);
}
replenishmentColDef.$inject = ['$q', 'schema', 'medData'];
function replenishmentColDef($q, schema, medData) {
....
}
我开始整理这样的规范(我们的测试用 CoffeeScript 编写)
describe 'replenishment-module', ->
columnDefProvider = undefined
beforeEach ->
module ($provide)->
$provide.provider 'columnDef', ->
@.register = sinon.spy()
@.$get = sinon.spy()
return // had to put an explicit return here, as @DTing suggested
module 'replenishment'
inject ->
现在我不知道如何正确模拟提供者的方法。你们能告诉我吗,也许我需要使用存根而不是间谍。