我一直在尝试了解 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”实例化,它会返回“这是一个测试”。我很确定我在这里遗漏了一些非常大的东西,但不能完全确定是什么。
任何帮助表示赞赏。