OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library mock.test; | 5 library mock.test; |
6 | 6 |
7 import 'package:unittest/unittest.dart' show test, group, skip_test; | 7 import 'package:unittest/unittest.dart' show test, group, skip_test; |
8 import 'package:matcher/matcher.dart'; | 8 import 'package:matcher/matcher.dart'; |
9 import 'package:mock/mock.dart'; | 9 import 'package:mock/mock.dart'; |
10 | 10 |
(...skipping 18 matching lines...) Expand all Loading... |
29 LogEntry makeTestLogEntry(String methodName, List args, int time, | 29 LogEntry makeTestLogEntry(String methodName, List args, int time, |
30 [String mockName]) { | 30 [String mockName]) { |
31 LogEntry e = new LogEntry(mockName, methodName, args, Action.IGNORE); | 31 LogEntry e = new LogEntry(mockName, methodName, args, Action.IGNORE); |
32 e.time = new DateTime.fromMillisecondsSinceEpoch(time, isUtc: true); | 32 e.time = new DateTime.fromMillisecondsSinceEpoch(time, isUtc: true); |
33 return e; | 33 return e; |
34 } | 34 } |
35 | 35 |
36 LogEntryList makeTestLog() { | 36 LogEntryList makeTestLog() { |
37 var args = new List(); | 37 var args = new List(); |
38 return new LogEntryList('test') | 38 return new LogEntryList('test') |
39 ..add(makeTestLogEntry('a', args, 1000)) | 39 ..add(makeTestLogEntry('a', args, 1000)) |
40 ..add(makeTestLogEntry('b', args, 2000)) | 40 ..add(makeTestLogEntry('b', args, 2000)) |
41 ..add(makeTestLogEntry('c', args, 3000)); | 41 ..add(makeTestLogEntry('c', args, 3000)); |
42 } | 42 } |
43 | 43 |
44 void main() { | 44 void main() { |
45 test('Mocking: Basics', () { | 45 test('Mocking: Basics', () { |
46 var m = new Mock(); | 46 var m = new Mock(); |
47 // intentional no-opp access to m.length | 47 // intentional no-opp access to m.length |
48 var foo = m.length; | 48 var foo = m.length; |
49 m.getLogs(callsTo('get length')).verify(happenedOnce); | 49 m.getLogs(callsTo('get length')).verify(happenedOnce); |
50 | 50 |
51 m.when(callsTo('foo', 1, 2)).thenReturn('A').thenReturn('B'); | 51 m.when(callsTo('foo', 1, 2)).thenReturn('A').thenReturn('B'); |
52 m.when(callsTo('foo', 1, 1)).thenReturn('C'); | 52 m.when(callsTo('foo', 1, 1)).thenReturn('C'); |
53 m.when(callsTo('foo', 9, anything)).thenReturn('D'); | 53 m.when(callsTo('foo', 9, anything)).thenReturn('D'); |
54 m.when(callsTo('bar', anything, anything)).thenReturn('E'); | 54 m.when(callsTo('bar', anything, anything)).thenReturn('E'); |
55 m.when(callsTo('foobar')).thenReturn('F'); | 55 m.when(callsTo('foobar')).thenReturn('F'); |
56 | 56 |
57 var s = '${m.foo(1,2)}${m.foo(1,1)}${m.foo(9,10)}' | 57 var s = '${m.foo(1,2)}${m.foo(1,1)}${m.foo(9,10)}' |
58 '${m.bar(1,1)}${m.foo(1,2)}'; | 58 '${m.bar(1,1)}${m.foo(1,2)}'; |
59 m.getLogs(callsTo('foo', anything, anything)). | 59 m.getLogs(callsTo('foo', anything, anything)).verify(happenedExactly(4)); |
60 verify(happenedExactly(4)); | |
61 m.getLogs(callsTo('foo', 1, anything)).verify(happenedExactly(3)); | 60 m.getLogs(callsTo('foo', 1, anything)).verify(happenedExactly(3)); |
62 m.getLogs(callsTo('foo', 9, anything)).verify(happenedOnce); | 61 m.getLogs(callsTo('foo', 9, anything)).verify(happenedOnce); |
63 m.getLogs(callsTo('foo', anything, 2)).verify(happenedExactly(2)); | 62 m.getLogs(callsTo('foo', anything, 2)).verify(happenedExactly(2)); |
64 m.getLogs(callsTo('foobar')).verify(neverHappened); | 63 m.getLogs(callsTo('foobar')).verify(neverHappened); |
65 m.getLogs(callsTo('foo', 10, anything)).verify(neverHappened); | 64 m.getLogs(callsTo('foo', 10, anything)).verify(neverHappened); |
66 m.getLogs(callsTo('foo'), returning(anyOf('A', 'C'))). | 65 m.getLogs(callsTo('foo'), returning(anyOf('A', 'C'))). |
67 verify(happenedExactly(2)); | 66 verify(happenedExactly(2)); |
68 expect(s, 'ACDEB'); | 67 expect(s, 'ACDEB'); |
69 }); | 68 }); |
70 | 69 |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 test('Mocking: No behavior', () { | 149 test('Mocking: No behavior', () { |
151 var m = new Mock.custom(throwIfNoBehavior:true); | 150 var m = new Mock.custom(throwIfNoBehavior:true); |
152 m.when(callsTo('foo')).thenReturn(null); | 151 m.when(callsTo('foo')).thenReturn(null); |
153 expect(() => m.foo(), returnsNormally); | 152 expect(() => m.foo(), returnsNormally); |
154 expect(() => m.bar(), throwsA((e) => e.toString() == | 153 expect(() => m.bar(), throwsA((e) => e.toString() == |
155 'Exception: No behavior specified for method bar.')); | 154 'Exception: No behavior specified for method bar.')); |
156 }); | 155 }); |
157 | 156 |
158 test('Mocking: Shared logList', () { | 157 test('Mocking: Shared logList', () { |
159 var logList = new LogEntryList(); | 158 var logList = new LogEntryList(); |
160 var m1 = new Mock.custom(name:'m1', log:logList); | 159 var m1 = new Mock.custom(name: 'm1', log: logList); |
161 var m2 = new Mock.custom(name:'m2', log:logList); | 160 var m2 = new Mock.custom(name: 'm2', log: logList); |
162 m1.foo(); | 161 m1.foo(); |
163 m2.foo(); | 162 m2.foo(); |
164 m1.bar(); | 163 m1.bar(); |
165 m2.bar(); | 164 m2.bar(); |
166 expect(logList.logs.length, 4); | 165 expect(logList.logs.length, 4); |
167 logList.getMatches(anything, callsTo('foo')).verify(happenedExactly(2)); | 166 logList.getMatches(anything, callsTo('foo')).verify(happenedExactly(2)); |
168 logList.getMatches('m1', callsTo('foo')).verify(happenedOnce); | 167 logList.getMatches('m1', callsTo('foo')).verify(happenedOnce); |
169 logList.getMatches('m1', callsTo('bar')).verify(happenedOnce); | 168 logList.getMatches('m1', callsTo('bar')).verify(happenedOnce); |
170 m2.getLogs(callsTo('foo')).verify(happenedOnce); | 169 m2.getLogs(callsTo('foo')).verify(happenedOnce); |
171 m2.getLogs(callsTo('bar')).verify(happenedOnce); | 170 m2.getLogs(callsTo('bar')).verify(happenedOnce); |
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
439 logList.add(e10); | 438 logList.add(e10); |
440 | 439 |
441 LogEntryList keyList = new LogEntryList('keys'); | 440 LogEntryList keyList = new LogEntryList('keys'); |
442 | 441 |
443 // Test with empty key list. | 442 // Test with empty key list. |
444 | 443 |
445 LogEntryList result; | 444 LogEntryList result; |
446 result = logList.preceding(keyList); | 445 result = logList.preceding(keyList); |
447 expect(result.logs, hasLength(0)); | 446 expect(result.logs, hasLength(0)); |
448 | 447 |
449 result = logList.preceding(keyList, includeKeys:true); | 448 result = logList.preceding(keyList, includeKeys: true); |
450 expect(result.logs, hasLength(0)); | 449 expect(result.logs, hasLength(0)); |
451 | 450 |
452 // Single key, distance 1, no restrictions. | 451 // Single key, distance 1, no restrictions. |
453 | 452 |
454 keyList.add(e3); | 453 keyList.add(e3); |
455 result = logList.preceding(keyList); | 454 result = logList.preceding(keyList); |
456 expect(result.logs, orderedEquals([e2])); | 455 expect(result.logs, orderedEquals([e2])); |
457 | 456 |
458 result = logList.following(keyList); | 457 result = logList.following(keyList); |
459 expect(result.logs, orderedEquals([e4])); | 458 expect(result.logs, orderedEquals([e4])); |
460 | 459 |
461 // Single key, distance 2, no restrictions. | 460 // Single key, distance 2, no restrictions. |
462 | 461 |
463 result = logList.preceding(keyList, distance:2); | 462 result = logList.preceding(keyList, distance: 2); |
464 expect(result.logs, orderedEquals([e1, e2])); | 463 expect(result.logs, orderedEquals([e1, e2])); |
465 | 464 |
466 result = logList.following(keyList, distance:2); | 465 result = logList.following(keyList, distance: 2); |
467 expect(result.logs, orderedEquals([e4, e5])); | 466 expect(result.logs, orderedEquals([e4, e5])); |
468 | 467 |
469 // Single key, distance 3, no restrictions. | 468 // Single key, distance 3, no restrictions. |
470 | 469 |
471 result = logList.preceding(keyList, distance:3); | 470 result = logList.preceding(keyList, distance: 3); |
472 expect(result.logs, orderedEquals([e0, e1, e2])); | 471 expect(result.logs, orderedEquals([e0, e1, e2])); |
473 | 472 |
474 result = logList.following(keyList, distance:3); | 473 result = logList.following(keyList, distance: 3); |
475 expect(result.logs, orderedEquals([e4, e5, e6])); | 474 expect(result.logs, orderedEquals([e4, e5, e6])); |
476 | 475 |
477 // Include keys in result | 476 // Include keys in result |
478 | 477 |
479 result = logList.preceding(keyList, distance:3, includeKeys:true); | 478 result = logList.preceding(keyList, distance: 3, includeKeys: true); |
480 expect(result.logs, orderedEquals([e0, e1, e2, e3])); | 479 expect(result.logs, orderedEquals([e0, e1, e2, e3])); |
481 | 480 |
482 result = logList.following(keyList, distance:3, includeKeys:true); | 481 result = logList.following(keyList, distance: 3, includeKeys: true); |
483 expect(result.logs, orderedEquals([e3, e4, e5, e6])); | 482 expect(result.logs, orderedEquals([e3, e4, e5, e6])); |
484 | 483 |
485 // Restrict the matches | 484 // Restrict the matches |
486 | 485 |
487 result = logList.preceding(keyList, logFilter:callsTo(startsWith('bar')), | 486 result = logList.preceding(keyList, logFilter:callsTo(startsWith('bar')), |
488 distance:3); | 487 distance:3); |
489 expect(result.logs, orderedEquals([e1, e2])); | 488 expect(result.logs, orderedEquals([e1, e2])); |
490 | 489 |
491 result = logList.preceding(keyList, logFilter:callsTo(startsWith('bar')), | 490 result = logList.preceding(keyList, logFilter:callsTo(startsWith('bar')), |
492 distance:3, includeKeys:true); | 491 distance:3, includeKeys:true); |
(...skipping 11 matching lines...) Expand all Loading... |
504 keyList.add(e0); | 503 keyList.add(e0); |
505 keyList.add(e3); | 504 keyList.add(e3); |
506 keyList.add(e7); | 505 keyList.add(e7); |
507 | 506 |
508 result = logList.preceding(keyList); | 507 result = logList.preceding(keyList); |
509 expect(result.logs, orderedEquals([e2, e6])); | 508 expect(result.logs, orderedEquals([e2, e6])); |
510 | 509 |
511 result = logList.following(keyList); | 510 result = logList.following(keyList); |
512 expect(result.logs, orderedEquals([e1, e4, e8])); | 511 expect(result.logs, orderedEquals([e1, e4, e8])); |
513 | 512 |
514 result = logList.preceding(keyList, includeKeys:true); | 513 result = logList.preceding(keyList, includeKeys: true); |
515 expect(result.logs, orderedEquals([e0, e2, e3, e6, e7])); | 514 expect(result.logs, orderedEquals([e0, e2, e3, e6, e7])); |
516 | 515 |
517 result = logList.following(keyList, includeKeys:true); | 516 result = logList.following(keyList, includeKeys: true); |
518 expect(result.logs, orderedEquals([e0, e1, e3, e4, e7, e8])); | 517 expect(result.logs, orderedEquals([e0, e1, e3, e4, e7, e8])); |
519 | 518 |
520 keyList.logs.clear(); | 519 keyList.logs.clear(); |
521 keyList.add(e3); | 520 keyList.add(e3); |
522 keyList.add(e7); | 521 keyList.add(e7); |
523 keyList.add(e10); | 522 keyList.add(e10); |
524 | 523 |
525 result = logList.preceding(keyList); | 524 result = logList.preceding(keyList); |
526 expect(result.logs, orderedEquals([e2, e6, e9])); | 525 expect(result.logs, orderedEquals([e2, e6, e9])); |
527 | 526 |
528 result = logList.following(keyList); | 527 result = logList.following(keyList); |
529 expect(result.logs, orderedEquals([e4, e8])); | 528 expect(result.logs, orderedEquals([e4, e8])); |
530 | 529 |
531 result = logList.preceding(keyList, includeKeys:true); | 530 result = logList.preceding(keyList, includeKeys: true); |
532 expect(result.logs, orderedEquals([e2, e3, e6, e7, e9, e10])); | 531 expect(result.logs, orderedEquals([e2, e3, e6, e7, e9, e10])); |
533 | 532 |
534 result = logList.following(keyList, includeKeys:true); | 533 result = logList.following(keyList, includeKeys: true); |
535 expect(result.logs, orderedEquals([e3, e4, e7, e8, e10])); | 534 expect(result.logs, orderedEquals([e3, e4, e7, e8, e10])); |
536 | 535 |
537 keyList.logs.clear(); | 536 keyList.logs.clear(); |
538 keyList.add(e0); | 537 keyList.add(e0); |
539 keyList.add(e3); | 538 keyList.add(e3); |
540 keyList.add(e7); | 539 keyList.add(e7); |
541 keyList.add(e10); | 540 keyList.add(e10); |
542 | 541 |
543 result = logList.preceding(keyList); | 542 result = logList.preceding(keyList); |
544 expect(result.logs, orderedEquals([e2, e6, e9])); | 543 expect(result.logs, orderedEquals([e2, e6, e9])); |
545 | 544 |
546 result = logList.following(keyList); | 545 result = logList.following(keyList); |
547 expect(result.logs, orderedEquals([e1, e4, e8])); | 546 expect(result.logs, orderedEquals([e1, e4, e8])); |
548 | 547 |
549 result = logList.preceding(keyList, includeKeys:true); | 548 result = logList.preceding(keyList, includeKeys: true); |
550 expect(result.logs, orderedEquals([e0, e2, e3, e6, e7, e9, e10])); | 549 expect(result.logs, orderedEquals([e0, e2, e3, e6, e7, e9, e10])); |
551 | 550 |
552 result = logList.following(keyList, includeKeys:true); | 551 result = logList.following(keyList, includeKeys: true); |
553 expect(result.logs, orderedEquals([e0, e1, e3, e4, e7, e8, e10])); | 552 expect(result.logs, orderedEquals([e0, e1, e3, e4, e7, e8, e10])); |
554 | 553 |
555 keyList.logs.clear(); | 554 keyList.logs.clear(); |
556 keyList.add(e0); | 555 keyList.add(e0); |
557 keyList.add(e3); | 556 keyList.add(e3); |
558 keyList.add(e7); | 557 keyList.add(e7); |
559 | 558 |
560 result = logList.preceding(keyList, distance:3); | 559 result = logList.preceding(keyList, distance: 3); |
561 expect(result.logs, orderedEquals([e1, e2, e4, e5, e6])); | 560 expect(result.logs, orderedEquals([e1, e2, e4, e5, e6])); |
562 | 561 |
563 result = logList.following(keyList, distance:3); | 562 result = logList.following(keyList, distance: 3); |
564 expect(result.logs, orderedEquals([e1, e2, e4, e5, e6, e8, e9, e10])); | 563 expect(result.logs, orderedEquals([e1, e2, e4, e5, e6, e8, e9, e10])); |
565 | 564 |
566 result = logList.preceding(keyList, distance:3, includeKeys:true); | 565 result = logList.preceding(keyList, distance: 3, includeKeys: true); |
567 expect(result.logs, orderedEquals([e0, e1, e2, e3, e4, e5, e6, e7])); | 566 expect(result.logs, orderedEquals([e0, e1, e2, e3, e4, e5, e6, e7])); |
568 | 567 |
569 result = logList.following(keyList, distance:3, includeKeys:true); | 568 result = logList.following(keyList, distance:3, includeKeys:true); |
570 expect(result.logs, orderedEquals([e0, e1, e2, e3, e4, e5, e6, | 569 expect(result.logs, orderedEquals([e0, e1, e2, e3, e4, e5, e6, |
571 e7, e8, e9, e10])); | 570 e7, e8, e9, e10])); |
572 | 571 |
573 keyList.logs.clear(); | 572 keyList.logs.clear(); |
574 keyList.add(e3); | 573 keyList.add(e3); |
575 keyList.add(e7); | 574 keyList.add(e7); |
576 keyList.add(e10); | 575 keyList.add(e10); |
577 | 576 |
578 result = logList.preceding(keyList, distance:3); | 577 result = logList.preceding(keyList, distance: 3); |
579 expect(result.logs, orderedEquals([e0, e1, e2, e4, e5, e6, e8, e9])); | 578 expect(result.logs, orderedEquals([e0, e1, e2, e4, e5, e6, e8, e9])); |
580 | 579 |
581 result = logList.following(keyList, distance:3); | 580 result = logList.following(keyList, distance: 3); |
582 expect(result.logs, orderedEquals([e4, e5, e6, e8, e9])); | 581 expect(result.logs, orderedEquals([e4, e5, e6, e8, e9])); |
583 | 582 |
584 result = logList.preceding(keyList, distance:3, includeKeys:true); | 583 result = logList.preceding(keyList, distance:3, includeKeys:true); |
585 expect(result.logs, orderedEquals([e0, e1, e2, e3, e4, e5, e6, | 584 expect(result.logs, orderedEquals([e0, e1, e2, e3, e4, e5, e6, |
586 e7, e8, e9, e10])); | 585 e7, e8, e9, e10])); |
587 | 586 |
588 result = logList.following(keyList, distance:3, includeKeys:true); | 587 result = logList.following(keyList, distance: 3, includeKeys: true); |
589 expect(result.logs, orderedEquals([e3, e4, e5, e6, e7, e8, e9, e10])); | 588 expect(result.logs, orderedEquals([e3, e4, e5, e6, e7, e8, e9, e10])); |
590 | 589 |
591 keyList.logs.clear(); | 590 keyList.logs.clear(); |
592 keyList.add(e0); | 591 keyList.add(e0); |
593 keyList.add(e3); | 592 keyList.add(e3); |
594 keyList.add(e7); | 593 keyList.add(e7); |
595 keyList.add(e10); | 594 keyList.add(e10); |
596 | 595 |
597 result = logList.preceding(keyList, distance:3); | 596 result = logList.preceding(keyList, distance: 3); |
598 expect(result.logs, orderedEquals([e1, e2, e4, e5, e6, e8, e9])); | 597 expect(result.logs, orderedEquals([e1, e2, e4, e5, e6, e8, e9])); |
599 | 598 |
600 result = logList.following(keyList, distance:3); | 599 result = logList.following(keyList, distance: 3); |
601 expect(result.logs, orderedEquals([e1, e2, e4, e5, e6, e8, e9])); | 600 expect(result.logs, orderedEquals([e1, e2, e4, e5, e6, e8, e9])); |
602 | 601 |
603 result = logList.preceding(keyList, distance:3, includeKeys:true); | 602 result = logList.preceding(keyList, distance:3, includeKeys:true); |
604 expect(result.logs, orderedEquals([e0, e1, e2, e3, e4, e5, e6, | 603 expect(result.logs, orderedEquals([e0, e1, e2, e3, e4, e5, e6, |
605 e7, e8, e9, e10])); | 604 e7, e8, e9, e10])); |
606 | 605 |
607 result = logList.following(keyList, distance:3, includeKeys:true); | 606 result = logList.following(keyList, distance:3, includeKeys:true); |
608 expect(result.logs, orderedEquals([e0, e1, e2, e3, e4, e5, e6, | 607 expect(result.logs, orderedEquals([e0, e1, e2, e3, e4, e5, e6, |
609 e7, e8, e9, e10])); | 608 e7, e8, e9, e10])); |
610 }); | 609 }); |
611 | 610 |
612 test('Mocking: stepwiseValidate', () { | 611 test('Mocking: stepwiseValidate', () { |
613 LogEntryList logList = new LogEntryList('test'); | 612 LogEntryList logList = new LogEntryList('test'); |
614 for (var i = 0; i < 10; i++) { | 613 for (var i = 0; i < 10; i++) { |
615 LogEntry e = new LogEntry(null, 'foo', [i], Action.IGNORE); | 614 LogEntry e = new LogEntry(null, 'foo', [i], Action.IGNORE); |
616 logList.add(e); | 615 logList.add(e); |
617 } | 616 } |
618 int total = 0; | 617 int total = 0; |
619 logList.stepwiseValidate((log, pos) { | 618 logList.stepwiseValidate((log, pos) { |
620 total += log[pos].args[0] * log[pos + 1].args[0]; | 619 total += log[pos].args[0] * log[pos + 1].args[0]; |
621 expect(log[pos + 1].args[0] - log[pos].args[0], equals(1)); | 620 expect(log[pos + 1].args[0] - log[pos].args[0], equals(1)); |
622 return 2; | 621 return 2; |
623 }); | 622 }); |
624 expect(total, equals((0 * 1) + (2 * 3) + (4 * 5) + (6 * 7) + (8 * 9))); | 623 expect(total, equals((0 * 1) + (2 * 3) + (4 * 5) + (6 * 7) + (8 * 9))); |
625 }); | 624 }); |
626 | 625 |
627 test('Mocking: clearLogs', () { | 626 test('Mocking: clearLogs', () { |
628 var m = new Mock(); | 627 var m = new Mock(); |
629 m.foo(); | 628 m.foo(); |
630 m.foo(); | 629 m.foo(); |
631 m.foo(); | 630 m.foo(); |
632 expect(m.log.logs, hasLength(3)); | 631 expect(m.log.logs, hasLength(3)); |
(...skipping 10 matching lines...) Expand all Loading... |
643 } | 642 } |
644 expect(log.logs, hasLength(9)); | 643 expect(log.logs, hasLength(9)); |
645 m1.clearLogs(); | 644 m1.clearLogs(); |
646 expect(log.logs, hasLength(6)); | 645 expect(log.logs, hasLength(6)); |
647 m1.clearLogs(); | 646 m1.clearLogs(); |
648 expect(log.logs, hasLength(6)); | 647 expect(log.logs, hasLength(6)); |
649 expect(log.logs.every((e) => e.mockName == 'm2' || e.mockName == 'm3'), | 648 expect(log.logs.every((e) => e.mockName == 'm2' || e.mockName == 'm3'), |
650 isTrue); | 649 isTrue); |
651 m2.clearLogs(); | 650 m2.clearLogs(); |
652 expect(log.logs, hasLength(3)); | 651 expect(log.logs, hasLength(3)); |
653 expect(log.logs.every((e) => e.mockName =='m3'), isTrue); | 652 expect(log.logs.every((e) => e.mockName == 'm3'), isTrue); |
654 m3.clearLogs(); | 653 m3.clearLogs(); |
655 expect(log.logs, hasLength(0)); | 654 expect(log.logs, hasLength(0)); |
656 }); | 655 }); |
657 | 656 |
658 // TODO(kevmoo): figure out why this test is failing | 657 // TODO(kevmoo): figure out why this test is failing |
659 skip_test("Mocking: instances", () { | 658 skip_test("Mocking: instances", () { |
660 var alice = new Object(); | 659 var alice = new Object(); |
661 var bob = new Object(); | 660 var bob = new Object(); |
662 var m = new Mock(); | 661 var m = new Mock(); |
663 m.when(callsTo("foo", alice)).alwaysReturn(true); | 662 m.when(callsTo("foo", alice)).alwaysReturn(true); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
728 test('Spys', () { | 727 test('Spys', () { |
729 var real = new Foo(); | 728 var real = new Foo(); |
730 var spy = new Mock.spy(real); | 729 var spy = new Mock.spy(real); |
731 var sum = spy.sum(1, 2, 3); | 730 var sum = spy.sum(1, 2, 3); |
732 expect(sum, 6); | 731 expect(sum, 6); |
733 expect(() => spy.total(1, 2, 3), throwsNoSuchMethodError); | 732 expect(() => spy.total(1, 2, 3), throwsNoSuchMethodError); |
734 spy.getLogs(callsTo('sum')).verify(happenedExactly(1)); | 733 spy.getLogs(callsTo('sum')).verify(happenedExactly(1)); |
735 spy.getLogs(callsTo('total')).verify(happenedExactly(1)); | 734 spy.getLogs(callsTo('total')).verify(happenedExactly(1)); |
736 }); | 735 }); |
737 } | 736 } |
OLD | NEW |