我在单元测试javascript函数listEntities时遇到了问题。难点在于mocking/stubbing。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();
};这是我的尝试:
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));
});
});
});下面是我的错误:
● 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)发布于 2017-11-08 07:07:19
我最终没有使用一个模仿库/框架。我刚刚创建了一个哑类。
https://stackoverflow.com/questions/47150559
复制相似问题