【问题标题】:Mocking with Dart用 Dart 模拟
【发布时间】:2014-08-04 04:56:47
【问题描述】:

我一直在尝试了解 dart 中的模拟库,但似乎我仍然没有得到它。

在我的库中,我有一个对外部资源的 HTTP 请求,我想模拟它以不一直依赖外部资源。

我的库中的主类如下所示:

SampleClass(String arg1, String arg2, [http.Client httpClient = null]) {
    this._arg1 = arg1;
    this._arg2 = arg2;
    _httpClient = (httpClient == null) ? http.Request : httpClient;
}

所以我已经准备好我的班级接收 http.client 作为参数,因为这是我想模拟的。

所以在我创建的单元测试文件中:

class HttpClientMock extends Mock implements http.Client {
  noSuchMethod(i) => super.noSuchMethod(i);
}

在我的单元测试中我已经完成了:

var mockHttpClient = new HttpClientMock()
        ..when(callsTo('send')).alwaysReturn("this is a test");

然后,我希望每次从我的库中调用“send”(已在我的单元测试中使用可选的“httpClient”实例化)时,它都会返回“这是一个测试”。我很确定我在这里遗漏了一些非常大的东西,但不能完全确定是什么。

任何帮助表示赞赏。

【问题讨论】:

    标签: mocking dart dart-unittest dart-mock


    【解决方案1】:

    我不确定您缺少什么,因为您的示例对我有用:

    void main() {
      test('bla', () {
        var mockHttpClient = new HttpClientMock()
                ..when(callsTo('send')).alwaysReturn("this is a test");
    
        http.Request req = new http.Request('POST', Uri.parse('http://www.google.com'));
        var s = mockHttpClient.send(req);
        print(s);
        expect(mockHttpClient.send(req), equals('this is a test'));
    
      });
    }
    

    【讨论】:

    • 你是对的。再次感谢。我陷入了另一个问题,尽管我正在做的事情有问题。我将发布另一个关于我遇到的真正问题的问题:-)
    猜你喜欢
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多