首页 / 知识
您将如何在 Ruby on Rails 应用程序中使用 rSpec 测试观察者?
2023-04-13 12:56:00

How would you test observers with rSpec in a Ruby on Rails application?假设你的一个 Ruby on Rails 应用程序中有一个 ActiveRecord::Observer - 你如何使用 rSpec 测试这个观察者? 您在正确的Rails上,但是在使用 rSpec、观察者和模拟对象时,我遇到了许多令人沮丧的意外消息错误。当我规范测试我的模型时,我不想在我的消息期望中处理观察者的行为。 在您的示例中,如果不知道观察者将对它做什么,就没有一种非常好的方法来指定模型上的"set_status"。 因此,我喜欢使用"No Peeping Toms"插件。鉴于您上面的代码并使用 No Peeping Toms 插件,我会像这样指定模型:
您可以指定模型代码,而不必担心会有观察者进来破坏您的价值。您可以像这样在 person_observer_spec 中单独指定:
如果你真的很想测试耦合的 Model 和 Observer 类,你可以这样做:
99% 的时间,我宁愿在关闭观察者的情况下进行规范测试。这样更容易。 免责声明:我实际上从未在生产站点上这样做过,但看起来合理的方法是使用模拟对象、 给定以下模型和观察者:
我会写一个这样的规范(我运行了它,它通过了)
no_peeping_toms 现在是一个ruby,可以在这里找到:https://github.com/patmaddox/no-peeping-toms 如果您想测试观察者观察到正确的模型并按预期接收通知,这里是使用 RR 的示例。 your_model.rb:
your_model_observer.rb:
your_model_observer_spec.rb:
|
最新内容
相关内容
如何在python代码中指定保存的文件
如何在python代码中指定保存的文件格式,代码,培训,文件格式,格式,二进制文件,文件,后缀,以上,方法,更多,python指定保存文件格式的方法:1、保Python可以做桌面应用程序吗
Python可以做桌面应用程序吗,平台,系统,较大,标准,培训,界面,桌面,文档,入门,开发者,python可以做桌面应用程序!目前比较主流的几个GUI平台:1Python测试有什么用途
Python测试有什么用途,平台,工具,代码,官网,软件,培训,系统,人员,工作,测试,Python测试用途如下:1、使用Python+Selenium实现web端的UI自动化S如何测试Python能不能用
如何测试Python能不能用,预期,培训,测试,终端,脚本,以上,存在,版本,结果,更多,测试Python能不能使用只需要在终端输入python-V即可,若正确输出python如何测试程序
python如何测试程序,代码,培训,工具,测试,程序,函数,模块,前面,下面,以上,测试函数是用于自动化测试,使用python模块中的unittest中的工具来测python如何在linux下运行python
python如何在linux下运行python,培训,绝对路径,文件,程序,这个地方,头部,文本,上面,以上,时候,Linux下运行python有两种方式:1、直接使用pythopython如何在python中打小数点
python如何在python中打小数点,培训,财政,标准,指数,函数,模块,参数,类型,精度,浮点,python提供了三种浮点值:内置的float与complex类型,以及标python如何在python导入tkinter
python如何在python导入tkinter,培训,标准,控件,应付自如,图形界面,实例,模块,以上,之后,消息,Tkinter是Python的标准GUI库。Python使用Tkintpython标准库中自带的单元测试框架
python标准库中自带的单元测试框架,标准,培训,框架,python如何在cmd窗口运行python程
python如何在cmd窗口运行python程序,代码,培训,路径,空格,窗口,文件,程序,下面,以上,目录,我们在编写python代码时,可以在交互模式下运行代码,python代码如何在命令行运行
python代码如何在命令行运行,代码,培训,路径,空格,文件,下面,以上,目录,更多,内容,我们在编写python代码时,可以在交互模式下运行代码,也可以用python整型对象是如何在内存中存储
python整型对象是如何在内存中存储的?,代码,培训,地址,位置,内存,开辟,整数,分配,存在,负数,在Python中整型对象所存储的位置是不同的,有一些