小编Ser*_*ets的帖子

将新服务器数据传递给react.js组件

我是React.js的新手,并且很难理解几个核心概念来决定我们应该将这个库用于我们的应用程序.我的主要问题是实际处理从服务器获取的模型中的更新.

想象一下,我有一个应该显示五种不同模型的页面.我已经按照本文所述的方式构建了它:http://facebook.github.io/react/blog/2013/11/05/thinking-in-react.html,所以我有"root"组件所有5个模型通过并使用道具,他们将下载到持有此模型的组件.所以,现在更新了2个模型(我从我的模型代码中获取了这些事件,这些模型代码存在于反应组件之外),我需要在UI上反映这一点.做这个的最好方式是什么?

我正在考虑以下选项:

  1. 再次使用新数据运行renderComponent并依赖DOM diff反应技术.我对此感到担心,因为我需要在任何微小的数据更改上执行此操作.
  2. 为包含此模型的组件调用setState.通过这种方式,数据变得不是道具,而是(根据我的理解)不是良好实践的状态.另外,我没有看到任何方法来获取根组件之外的子组件.
  3. 有多个renderComponent调用,所以这样我就可以访问任何这个组件的setProps.但后来我需要做一些模板工作(让页面上的所有容器都可用)并且它会杀死所有反应的想法.
  4. 让一个根组件包含向用户显示的应用程序中的所有可能模型,并调用setProps来更改模型.我关注的是,这个组件将会变得非常大,并且在某些方面成为"意大利面"+点1的关注点.

提前谢谢你,希望我能清楚地解释我的问题.

javascript reactjs

23
推荐指数
3
解决办法
2万
查看次数

Flask-SQLAlchemy集成测试无法找到回滚更改的方法

我正在尝试学习烧瓶技术堆栈,对于我的应用程序,我正在使用Flask-SQLAlchemy.一切都很完美,但我正在努力编写集成测试.我不想使用SQLite,因为在生产中我正在使用PostgreSQL并且放置大量的模拟实际上会更多地测试我自己的实现而不是逻辑本身.

因此,经过一些研究后,我决定实施将在测试数据库中写入数据的测试,并在每次测试后回滚更改(出于性能的考虑).实际上,我正在尝试实现类似于这种方法的东西:http://sontek.net/blog/detail/writing-tests-for-pyramid-and-sqlalchemy.

我的问题是创建正确的事务并能够回滚它.这是我的基类的代码:

from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy()

class MyAppIntegrationTestCase(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
    app.config['TESTING'] = True
    app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql+psycopg2:///db_test'
    init_app()
    db.app = app
    db.create_all(app=app)

    @classmethod
    def tearDownClass(cls):
        db.drop_all(app=app)

    def setUp(self):
        db.session.rollback()
        self.trans = db.session.begin(subtransactions=True)

    def tearDown(self):
        self.trans.rollback()
Run Code Online (Sandbox Code Playgroud)

当我尝试执行测试时,出现以下错误:

Traceback (most recent call last):
 File "myapp/src/core/tests/__init__.py", line 53, in tearDown
   self.trans.rollback()
 File "myapp/venv/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 370, in rollback
   self._assert_active(prepared_ok=True, rollback_ok=True)
 File "myapp/venv/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 203, in _assert_active
   raise sa_exc.ResourceClosedError(closed_msg)
ResourceClosedError: This transaction is closed
Run Code Online (Sandbox Code Playgroud)

我敢打赌,这是scoped_session的问题,当我运行测试时,它会为所有测试重用一个全局会话,但我在SQLAlchemy中的知识还不够深入.

任何帮助将非常感谢!谢谢!

python unit-testing sqlalchemy flask flask-sqlalchemy

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