首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在javascript中模拟对象及其方法

如何在javascript中模拟对象及其方法
EN

Stack Overflow用户
提问于 2017-11-07 13:26:21
回答 1查看 154关注 0票数 0

我在单元测试javascript函数listEntities时遇到了问题。难点在于mocking/stubbing。javascript模拟/存根库的文档一团糟。我希望有经验的人能给我指路。代码如下:

代码语言:javascript
复制
export const listEntities = (kind, googleDatastoreFactory) => {
  const datastore = googleDatastoreWrapperFactory();
  const query = datastore.createQuery(kind);
  return datastore.runQuery(query)
    .then(results => (results[0]));
};

export const googleDatastoreFactory = () => { 
    const Datastore = require('@google-cloud/datastore');
    return Datastore();
};

这是我的尝试:

代码语言:javascript
复制
describe('datastore api', () => {
  describe('listEntities', () => {
    const mockedGoogleDatastore = JsMockito.mock(GoogleDatastore);
    JsMockito.when(mockedGoogleDatastore).runQuery('query').thenReturn(new Promise(resolve => resolve(['result'])));
    JsMockito.when(mockedGoogleDatastore).createQuery('Test').thenReturn('query');
    const googleDatastoreFactory = () => (mockedGoogleDatastore);
    test('should return list of items', () => {
      listEntities('Test', googleDatastoreFactory).then(result => console.log(result));
    });
  });
});

下面是我的错误:

代码语言:javascript
复制
  ● datastore api › listEntities › encountered a declaration exception

    TypeError: _jsmockito2.default.mock is not a function

      at Suite.<anonymous> (app/api/datastore.api.test.js:7:60)
      at Suite.<anonymous> (app/api/datastore.api.test.js:6:3)
      at Object.<anonymous> (app/api/datastore.api.test.js:5:1)
          at Generator.next (<anonymous>)
          at Promise (<anonymous>)
          at Generator.next (<anonymous>)
          at <anonymous>
      at process._tickCallback (internal/process/next_tick.js:188:7)
EN

回答 1

Stack Overflow用户

发布于 2017-11-08 07:07:19

我最终没有使用一个模仿库/框架。我刚刚创建了一个哑类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47150559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档