飞镖模拟功能

时间:2014-05-29 03:46:00

标签: dart dart-unittest

如何测试调用模拟函数?

我在Mocking with Dart - How to test that a function passed as a parameter was called?上找到了这个例子并尝试扩展它以检查函数是否被调用。

library test2;

import "package:unittest/unittest.dart";
import "package:mock/mock.dart";

class MockFunction extends Mock {
  call(int a, int b) => a + b;
}

void main() {
  test("aa", () {

    var mockf = new MockFunction();
    expect(mockf(1, 2), 3);
    mockf.getLogs(callsTo(1, 2)).verify(happenedOnce);
  });
}

似乎 mockf.getLogs()结构是空的......

1 个答案:

答案 0 :(得分:1)

您必须模拟方法并在日志中指定其名称。这是工作代码:

library test2;

import "package:unittest/unittest.dart";
import "package:mock/mock.dart";

class MockFunction extends Mock {
  MockFunction(){
    when(callsTo('call')).alwaysCall(this.foo);
  }
  foo(int a, int b) {
    return a + b;
    }
}

void main() {
  test("aa", () {    
    var mockf = new MockFunction();
    expect(mockf(1, 2), 3);
    mockf.calls('call', 1, 2).verify(happenedOnce);
  });
}

修改 回答类似的问题:Dart How to mock a procedure