颤振:测试

Lit*_*key 5 testing unit-testing dart flutter

我试图测试这个功能

  UserApi createUserApi(String url, String username, String password) {
    UserApi userApi = new UserApi(base: route(url), serializers: repo);
    userApi.base.basicAuth('$username', '$password');
    return userApi;
  }
Run Code Online (Sandbox Code Playgroud)

基本上,测试是将这个函数的结果与它的“手动组合”进行比较,期望得到相同的结果。但它没有:

  String username = "asd";
  String password = "asd";
  UserApi userApiTest = new UserApi(base: route("asd"), serializers: repo);
  userApiTest.base.basicAuth('$username', '$password');
  test("UserApi creation", () {
    UserApi userApi = _presenter.createUserApi("asd", "asd", "asd");
    expect(userApi, userApiTest);
  }); 
Run Code Online (Sandbox Code Playgroud)

结果总是:

Expected: <Instance of 'UserApi'>
  Actual: <Instance of 'UserApi'>
Run Code Online (Sandbox Code Playgroud)

他们为什么不同?在调试中,每个属性都是相同的。

Gün*_*uer 7

您有两个不同的UserApi. 它们具有相同的属性值并不意味着它们相等。

您需要实施hashCodeoperator==。默认情况下,只有比较对同一对象实例的引用才被认为是相等的(因为它们是相同的)

也可以看看