File tree Expand file tree Collapse file tree 1 file changed +62
-0
lines changed Expand file tree Collapse file tree 1 file changed +62
-0
lines changed Original file line number Diff line number Diff line change @@ -324,4 +324,66 @@ describe('Vuex', () => {
324
324
expect ( vm . a ) . to . equal ( 6 )
325
325
expect ( store . state . a ) . to . equal ( 6 )
326
326
} )
327
+
328
+ it ( 'shared getters should evaluate only once' , function ( done ) {
329
+ const store = new Vuex . Store ( {
330
+ state : {
331
+ a : 1
332
+ } ,
333
+ mutations : {
334
+ [ TEST ] ( state ) {
335
+ state . a ++
336
+ }
337
+ }
338
+ } )
339
+
340
+ let getterCalls = 0
341
+ let watcherCalls = 0
342
+ const getter = state => {
343
+ getterCalls ++
344
+ return state . a
345
+ }
346
+
347
+ const vm1 = new Vue ( {
348
+ store,
349
+ vuex : {
350
+ getters : {
351
+ a : getter
352
+ }
353
+ } ,
354
+ watch : {
355
+ a : ( ) => {
356
+ watcherCalls ++
357
+ }
358
+ }
359
+ } )
360
+
361
+ const vm2 = new Vue ( {
362
+ store,
363
+ vuex : {
364
+ getters : {
365
+ a : getter
366
+ }
367
+ } ,
368
+ watch : {
369
+ a : ( ) => {
370
+ watcherCalls ++
371
+ }
372
+ }
373
+ } )
374
+
375
+ expect ( vm1 . a ) . to . equal ( 1 )
376
+ expect ( vm2 . a ) . to . equal ( 1 )
377
+ expect ( getterCalls ) . to . equal ( 1 )
378
+ expect ( watcherCalls ) . to . equal ( 0 )
379
+
380
+ store . dispatch ( 'TEST' )
381
+ Vue . nextTick ( ( ) => {
382
+ expect ( vm1 . a ) . to . equal ( 2 )
383
+ expect ( vm2 . a ) . to . equal ( 2 )
384
+ expect ( getterCalls ) . to . equal ( 2 )
385
+ expect ( watcherCalls ) . to . equal ( 2 )
386
+ done ( )
387
+ } )
388
+ } )
327
389
} )
You can’t perform that action at this time.
0 commit comments