小编May*_*ate的帖子

如何使用react-testing-library测试包装在withStyles中的样式化Material-UI组件?

我正在尝试使用打字稿中的react-testing-library创建带有样式的Material-UI组件的测试。我发现很难访问组件的内部功能以进行模拟和断言。

Form.tsx

export const styles = ({ palette, spacing }: Theme) => createStyles({
    root: {
        flexGrow: 1,
    },
    paper: {
        padding: spacing.unit * 2,
        margin: spacing.unit * 2,
        textAlign: 'center',
        color: palette.text.secondary,
    },
    button: {
        margin: spacing.unit * 2,
    }
});

interface Props extends WithStyles<typeof styles> { };

export class ExampleForm extends Component<Props, State> {
  async handleSubmit(event: React.FormEvent<HTMLFormElement>) {
    // Handle form Submit
    ...
    if (errors) {
            window.alert('Some Error occurred');
            return;
        }
  }
  // render the form
}
export default …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs jestjs material-ui react-testing-library

11
推荐指数
2
解决办法
741
查看次数

如何使用打字稿模拟或断言 window.alert 是否在 React &amp; Jest 中触发?

我正在使用玩笑测试来测试用 Create React App 创建的 #typescript 编写的 React 项目。我在用着react-testing-library。我有一个表单组件,它显示alert表单是否提交为空。我想通过监视/嘲笑来测试此功能(也许),window.alert但它不起作用。

我尝试jest.fn()按照许多答案中的建议使用,但这也不起作用。

window.alert = jest.fn();
expect(window.alert).toHaveBeenCalledTimes(1);
Run Code Online (Sandbox Code Playgroud)

这是我的实现方式:Form.tsx

async handleSubmit(event: React.FormEvent<HTMLFormElement>) {
   // check for errors
    if (errors) {
        window.alert('Some Error occurred');
        return;
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是我构建 React+Jest+react-testing-library 测试的方法:Form.test.tsx

it('alerts on submit click', async () => {
  const alertMock = jest.spyOn(window,'alert'); 
  const { getByText, getByTestId } = render(<Form />)
  fireEvent.click(getByText('Submit'))
  expect(alertMock).toHaveBeenCalledTimes(1)
})
Run Code Online (Sandbox Code Playgroud)

typescript reactjs jestjs react-testing-library

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

如何在 Flutter 中设置 Firebase Analytics 自定义事件而不在每个屏幕中传递“分析/观察者”对象

我正在为我的 Flutter 项目设置Firebase 分析包。库中提供的示例传递analytics用于跟踪事件和observer跟踪选项卡更改的对象。

class MyApp extends StatelessWidget {
 ...
Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Firebase Analytics Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      navigatorObservers: <NavigatorObserver>[observer],
      home: MyHomePage(
        title: 'Firebase Analytics Demo',
        analytics: analytics,
        observer: observer,
      ),
    );
  }
}

...

class _MyHomePageState extends State<MyHomePage> {
...
Future<void> _sendAnalyticsEvent() async {
    await analytics.logEvent(
      name: 'test_event',
      parameters: <String, dynamic>{
        'string': 'string',
        'int': 42,
        'long': 12345678910,
        'double': 42.0,
        'bool': true,
      },
    );
    setMessage('logEvent …
Run Code Online (Sandbox Code Playgroud)

google-analytics firebase flutter firebase-analytics bloc

7
推荐指数
3
解决办法
6565
查看次数

如何将 Taps 传递给顶部小部件下方的小部件?

我正在尝试在 Flutter 中实现一个非常简单的Card Paginator 组件(单卡)版本。

这是我创建的基本演示的示例:

class CardComponent extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Stack(
      children: [
        Positioned(
          top: 20.0,
          left: 20.0,
          child: 
          GestureDetector(
          // onTap should run while the text is visible on the screen
          // The text will become invisible when the Listview gest scrolled upwards
          onTap: (){print('text tapped');},
            child:
          Container(
          alignment:Alignment.topCenter,
          color: Colors.blueAccent,
        // This is fixed Text over which the card should scroll
        child: Text('Test Button')))),
        ListView(
          children: [
            //  This …
Run Code Online (Sandbox Code Playgroud)

listview flutter flutter-layout

6
推荐指数
2
解决办法
3028
查看次数

如何在 Flutter 集成测试中模拟/绕过外部依赖项和工作流程?

我正在编写一个 Flutter 应用程序,它仅具有基于firebase_authgoogle_sign_in的 Google 登录。我无法找到如何模拟 Flutter 中的依赖项或如何单击 Google 身份验证对话框或绕过整个身份验证工作流程的标准工作示例。

我正在用于flutter_driver 编写此处提到的集成测试。

谷歌_登录_

app_test.dart

import 'package:flutter_driver/driver_extension.dart';
import 'package:pruoo_app/main.dart' as app;

void main() {
  enableFlutterDriverExtension();
  app.main();
}
Run Code Online (Sandbox Code Playgroud)

登录.dart

//...imports

class LoginView extends StatefulWidget {
  @override
  _LoginViewState createState() => _LoginViewState();
}

class _LoginViewState extends State<LoginView> {
  StreamSubscription<AuthenticationState> x;

  void getStream(AuthenticationState state, BuildContext context) async {
    if (state.toString() == 'AuthenticationAuthenticated') {
      print("Navigate to Main Page");
      );
  }
}

  Widget build(BuildContext context) {
    final AuthenticationBloc authenticationBloc =
        BlocProvider.of<AuthenticationBloc>(context);

    x = authenticationBloc.state.listen((state) { …
Run Code Online (Sandbox Code Playgroud)

dart flutter flutter-test

5
推荐指数
0
解决办法
632
查看次数

如何使用 Google Play Referrer API 跟踪 Flutter App 中的 Referrer?

我试图弄清楚如何使用Play Install Referrer Library/API访问 Google Play 商店提供的引荐来源信息。我需要创建一个到 Android 的平台通道吗?什么时候该函数应该被触发?

android install-referrer flutter

3
推荐指数
1
解决办法
3067
查看次数

使用 Cloud Functions/Admin SDK 在 Google Firestore 和 Google Sheets 之间同步数据

在使用 Cloud Firestore 作为数据后端时,我需要与非技术站点经理(编辑、销售团队等)共享一些数据集合。此外,我希望让这些人有权编辑存储在 Cloud Firestore 中的数据。

Google Sheets 是站点管理员非常熟悉的工具,它可以节省我开发 CRUD 管理面板的时间,例如从头开始用于数据更新和查看的界面。

这个 Stack Overflow答案显示了如何使用云函数和深度级别发送数据,这个 Github可以使用 Google Apps 脚本从 Firestore 获取数据(我希望使用 Cloud Functions 或 Firebase Admin SDK 来做到这一点),但我仍在尝试弄清楚如何制作一个端到端的基于表格的界面。

请指导是否有更好的替代方案来实现相同的目标。我在从 SQL 数据库和 Django 自动创建的管理界面切换到 Firebase-Firestore NoSQL 世界时遇到了一些困难。

google-sheets firebase google-cloud-functions google-cloud-firestore

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

如何在Flutter Tabs中添加圆点作为指标?

我们希望生成以下布局作为Flutter中的“滚动选项卡”: 在此处输入图片说明

我尝试使用indicatorTabBar的属性将指示器自定义为绿点。THE indicator属性接受Decoration继承的Widget可能有BoxDecorationShapeDecorationUnderlineTabDecoration作为选项。在此处输入图片说明

双方BoxDecorationShapeDecoration环绕标签内容,因此难以添加选项卡下一个循环。UnderlineTabDecoration没有提供任何使边缘变圆和自定义宽度的方法。

我能想到的最好的是:

TabBar(
          controller: _controller,
          indicatorSize: TabBarIndicatorSize.tab,
          indicator: UnderlineTabIndicator(
          borderSide: BorderSide(width: 5.0, ),
          insets: EdgeInsets.symmetric(horizontal:36.0)
        ),

          isScrollable: true,
          tabs: <Widget>[
            Tab(text: 'Week 1',),
            Tab(text: 'Week 2',),
            Tab(text: 'Week 3',),
            Tab(text: 'Week 4',),
            Tab(text: 'Week 5',),
            Tab(text: 'Week 6',),
            Tab(text: 'Week 7',),
            Tab(text: 'Week 8',),

          ],
        ),
Run Code Online (Sandbox Code Playgroud)

结果如下: 在此处输入图片说明

如何在Flutter TabBar中添加圆点作为指标?

dart flutter flutter-layout

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