小编Kwn*_*sos的帖子

如何在 swift 中测试包含 Task Async/await 的方法

给定以下包含Task 的方法。

  • self.interactor被嘲笑。
func submitButtonPressed() {
    Task {
        await self.interactor?.fetchSections()
    }
}
Run Code Online (Sandbox Code Playgroud)

我如何编写一个测试来验证 fetchSections ()是从该方法调用的?!

我的第一个想法是使用期望并等待它被实现(在模拟的代码中)。

但是对于新的 async/await 有没有更好的方法呢?

xcode swift

22
推荐指数
4
解决办法
8726
查看次数

如何将 ViewModel 与 Repository 连接起来,以便将数据传播到 View(MVVM、Livedata)

我添加了一些代码以使我的问题更清楚。

改造界面:

public interface JsonPlaceHolderAPI {
    public static final String BASE_URL = "https://jsonplaceholder.typicode.com/";

    @GET("todos/{number}")
    Call<ResponseBody> getJsonResponse(@Path("number") String number);
}
Run Code Online (Sandbox Code Playgroud)

存储库:--> fetchResponse() 将 Viewmodel 的 MutableLiveData 作为参数并使用它来更新其值,然后触发 View 更改其 UI。

public class Repository {

    private final JsonPlaceHolderAPI api;

    public Repository() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .build();
        api = retrofit.create(JsonPlaceHolderAPI.class);
    }


    public void fetchResponse(String number, final MutableLiveData<CharSequence> mld){
        final MutableLiveData<CharSequence> ml = new MutableLiveData<>();

        api.getJsonResponse(number).enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                try {
                    mld.setValue(response.body().string());

                } catch …
Run Code Online (Sandbox Code Playgroud)

android android-livedata android-architecture-components

13
推荐指数
1
解决办法
1万
查看次数

Google的Firebase UI身份验证失败并显示以下消息(代码:10消息:10)

我制作了一个使用Firebase功能的聊天应用程序Real-time database。我在使用Google身份验证时遇到问题。当我从Play商店下载应用程序时,问题开始了,当我在调试模式下运行应用程序时,身份验证工作正常。当用户尝试登录时,他们会收到一条敬酒消息code:10 message:10

我想在这里指出:我已经添加了SHA1指纹。我该如何解决?

*不确定这是否有帮助,但本教程已逐步进行

java android firebase firebase-authentication firebaseui

7
推荐指数
2
解决办法
3547
查看次数

Python导入点符号

谁可以给我解释一下这个?当您导入时,Tkinter.Messagebox这实际上是什么意思(点符号)?我知道您可以导入,Tkinter但是导入时Tkinter.Messagebox实际上是什么?它是一堂课吗?

我是python的新手,有时点符号使我感到困惑。

python module python-import

5
推荐指数
2
解决办法
4188
查看次数

为什么用pytz中的tzinfo创建日期时间会显示奇怪的时间偏移?

有人可以解释一下为什么我不能得到相同的结果吗?

import datetime,pytz
var1 = datetime.datetime(2017,10,25,20,10,50,tzinfo=pytz.timezone("Europe/Athens")))
print(var1)
Run Code Online (Sandbox Code Playgroud)

此代码的输出是: 2017-10-25 20:10:50+01:35

import datetime,pytz
var1 = datetime.datetime(2017,10,25,20,10,50)
var1 = pytz.timezone("Europe/Athens").localize(var1)
print(var1)
Run Code Online (Sandbox Code Playgroud)

此代码的输出是: 2017-10-25 20:10:50+03:00

我的问题是为什么他们有不同的时区(1:35和3:00).我知道第二个代码是真的,因为我的UTC是3:00.但是你能告诉我为什么我要进入1:35第一个吗?

python timezone datetime pytz

5
推荐指数
1
解决办法
455
查看次数

防止 window.open() 刷新窗口

我希望你很棒!可能有人对此有所了解

用例

  1. 页面 A 使用 window.open() 打开页面 B

  2. 刷新页面 A 并尝试再次使用 window.open() 聚焦页面 B。

代码

if (!window.memwin || window.memwin.closed) {
    window.memwin = window.open(URL, "windowName", "",true)
}
window.memwin.focus();
Run Code Online (Sandbox Code Playgroud)

问题

焦点发生在页面 B 上,但页面已重新加载。有什么方法可以克服这个问题吗?我希望页面 B 无需重新加载即可获得焦点。

*(如果页面 A 未重新加载,则使用 window.open() 将焦点移至页面 B 将不会重新加载页面 B)

javascript google-chrome

5
推荐指数
1
解决办法
248
查看次数