gpt4 book ai didi

mocking - 与 Dart mock

转载 作者:行者123 更新时间:2023-12-03 03:18:59 25 4
gpt4 key购买 nike

我一直试图绕过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");

然后,我希望每次我从库中调用“发送”(在我的单元测试中使用可选的“httpClient”实例化)时,它都将返回“这是一个测试”。我很确定我在这里错过了一件非常大的事情,但是我不能完全理解。

任何帮助表示赞赏。

最佳答案

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

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'));

});
}

关于mocking - 与 Dart mock ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24208588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com