Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用sinon嘲弄/顽固不化猫鼬findById

用sinon嘲弄/顽固不化猫鼬findById
EN

Stack Overflow用户
提问于 2014-03-01 03:54:11
回答 2查看 4K关注 0票数 6

我试着把我的猫鼬模型,特别是猫鼬的findById方法

当findById被用'abc123‘调用时,我试图让猫鼬返回指定的数据

到目前为止,我的情况如下:

代码语言:javascript
运行
AI代码解释
复制
require('../../model/account');

sinon = require('sinon'),
mongoose = require('mongoose'),
accountStub = sinon.stub(mongoose.model('Account').prototype, 'findById');
controller = require('../../controllers/account');

describe('Account Controller', function() {

    beforeEach(function(){
        accountStub.withArgs('abc123')
            .returns({'_id': 'abc123', 'name': 'Account Name'});
    });

    describe('account id supplied in querystring', function(){
        it('should retrieve acconunt and return to view', function(){
            var req = {query: {accountId: 'abc123'}};
            var res = {render: function(){}};

            controller.index(req, res);
                //asserts would go here
            });
    });

我的问题是,在运行mocha时,我会得到以下异常

TypeError:尝试将未定义的属性findById包装为函数

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-13 07:57:02

看看西农猫鼬。只需几行代码就可以期望使用链式方法:

代码语言:javascript
运行
AI代码解释
复制
// If you are using callbacks, use yields so your callback will be called
sinon.mock(YourModel)
  .expects('findById').withArgs('abc123')
  .chain('exec')
  .yields(someError, someResult);

// If you are using Promises, use 'resolves' (using sinon-as-promised npm) 
sinon.mock(YourModel)
  .expects('findById').withArgs('abc123')
  .chain('exec')
  .resolves(someResult);

你可以在回购上找到有用的例子。

另外,还有一个建议:使用mock方法而不是stub,这将检查方法是否真的存在。

票数 2
EN

Stack Overflow用户

发布于 2014-06-11 10:27:44

由于您似乎是在测试单个类,所以我将使用泛型

代码语言:javascript
运行
AI代码解释
复制
var mongoose = require('mongoose');
var accountStub = sinon.stub(mongoose.Model, 'findById');

这将阻止对Model.findById修补的猫鼬的任何调用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22114021

复制
相关文章
python: ValueError:
File "/self/_UDACity/pythonLearning/mathTest.py", line 28, in <module>     tmp3 = math.log((1/3), 2)# ValueError: math domain error
py3study
2020/01/08
7120
【说站】python元组如何打包和解包
2、解包时,如果解包出来的元素数目与变量数目不匹配,就会引发ValueError异常。
很酷的站长
2022/11/23
8170
【说站】python元组如何打包和解包
Python - 解包的各种骚操作
https://www.cnblogs.com/poloyy/p/14658433.html
小菠萝测试笔记
2021/08/10
6600
Python抛出异常_python抛出异常的作用
在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,不同的类对象标识不同的异常,一个异常标识一种错误
全栈程序员站长
2022/11/02
2.6K0
文件打包解包的方法
在很多情况下,软件需要隐藏一些图片,防止用户对其更改,替换。例如腾讯QQ里面的资源图片,哪怕你用Everything去搜索也搜索不到,那是因为腾讯QQ对这些资源图片进行了打包,当软件运行的时候解包获取资源图片。
DeROy
2020/05/12
2.1K1
Python有趣的解包用法
python中的解包可以这样理解:一个list是一个整体,想把list中每个元素当成一个个个体剥离出来,这个过程就是解包,我们来看下面这些例子(分为10个部分)。
Python中文社区
2018/07/26
8480
dotnet C# 应用程序进程创建太多线程将会抛出 OutOfMemoryException 异常
本文记录一个 dotnet 的特性,在应用程序快速创建大量线程的时候,将会因为线程创建时没有足够的资源而创建失败,此时将会抛出 OutOfMemoryException 异常,但实际进程占用内存不多
林德熙
2021/09/23
9900
matplotlib无法显示图片_pycharm不出图
首先你运行之后最小化pycharm,看看是不是已经出来了,只是没有自己弹到最顶层。
全栈程序员站长
2022/09/25
2.2K0
matplotlib无法显示图片_pycharm不出图
Celery ValueError: n
最近因项目需要,在使用任务队列Celery的时候,出现如题错误,最终在github上里找到解决办法,记录一下。
py3study
2020/01/20
7980
【说站】python序列解包的使用
2、字典中使用序列解包时,默认情况下是键的操作。如果需要操作键值,则需要使用items(),如果需要操作值,则使用value()。
很酷的站长
2022/11/24
4650
【说站】python序列解包的使用
ValueError: too many
数据:{'O_DATA': [{'ACCOUNT': 'A20001002', 'ZACTOSP': Decimal('21792635.96'), 'ZBUDGET': Decimal('290271.50'), 'ZACTUAL': Decimal('4878563.10')}]}
py3study
2020/01/16
6860
ValueError: too many
ValueError:invalid
使用django的异步调用场景时,并配置了如下配置:出现了错误:ValueError: Database is int between 0 and limit - 1, not :6379/0
cywhat
2023/04/27
3830
Basemap工具函数(1)
添加一个经度值到经度数组中,并且添加一列值到数据数组中。当数据覆盖全部经度时,非常有利于添加缺省值。
bugsuse
2020/04/21
2.4K0
Basemap工具函数(1)
解决织梦CMS Tag中文字太多/太长失效无法添加的问题
最近老蒋看到群里网友在使用织梦CMS程序还是比较多的,尤其是有做范文类内容网站比较多,毕竟大数据网站是不适合WP这种程序的。不过在织梦CMS程序提交文章过程中,他们如果提交的TAG字符过长,或者中文字太多的话会会无法被写入数据库,这个是什么问题呢?
老蒋
2021/12/27
9970
深入Go:错误的包装与解包
仔细想想,我们的Go代码中可能有四分之一的代码都是和错误处理相关的,而我们已经接受了,error无处不在。但似乎Go的error处理并不够强大,也缺乏统一的错误处理流程的逻辑;在经历了大量的讨论后,Go 1.13引入了错误的包装和解包,也许某种程度上可以优化我们的错误处理流程。
wenxing
2021/12/14
2K0
Python 元组解包的几种方法
要将一个tuple中的所有值作为参数,如果直接用上面两种方法就不太 pythonic了,可以用以下方法解包
Ewdager
2020/07/14
1.4K0
maven 解包依赖项中的文件
使用goal:unpack-dependencies 在配置参数includeArtifactIds中指定要解包的模块制件ID
路过君
2022/07/20
2.5K0
工具推荐|pyinterp-面向地球科学领域的插值工具
此项目的动机是为地球科学领域提供插值工具。当然也有其它库可应用于地球科学的数据插值,但是这些库基本完全是用Python编写,其性能无法满足需求。
bugsuse
2022/09/23
9800
工具推荐|pyinterp-面向地球科学领域的插值工具
Python可视化 | 三维图形迁移
在前面推送中我们提到了通过collection功能而在3D地图中添加地图的方法,也短暂提到了栅格与填色两种图形样式的降维方法。但是从matplotlib这两个函数的底层有一定的局限性,比如下面这两张图的侧面填色就无法绘出:
郭好奇同学
2021/05/28
1.9K0
Python可视化 | 三维图形迁移
自动美化你的Matplotlib ,使用Seaborn控制图表的默认值
如果您曾经在 Python 中进行过数据可视化,那么很可能您使用了 Matplotlib 库。这个库包含了许多绘图的功能。但是一些概念上简单的可视化需要大量的代码才能完成。而在这个时代,人们希望能够与图表进行交互——这是普通 Matplotlib 库无法提供的功能。更重要的是,采用默认设置的 Matplotlib 图表通常看起来很糟糕。
deephub
2020/06/04
1.7K0

相似问题

如何根据熊猫数据帧中的数据类型填写NaN值?

12

未知的帧大小

11

块大小未知的示例dask数据帧

129

如何填写熊猫丢失的GPS数据?

22

熊猫费()填写丢失的数据

26
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档