我真的在寻找如何修补Whatever.objects.get_or_create,但我无法得到任何建议或想法如何去做.
好吧,我的问题是我有这样的事情:
def create_and_get_object(
name, request, save_url=True, data=None):
try:
(object_type_, created) = Object.objects.get_or_create(
name=name)
try:
...
except Exception:
obj = None
msg = ("Failed to get or create object `Object` with"
"name='%s'" % name)
logger_.exception(msg, extra={'request': request})
return obj
Run Code Online (Sandbox Code Playgroud)
所以,我想测试一下Object.objects.get_or_create会抛出异常...
我正在尝试,Mock(side_effect=Exception())但我真的不知道如何使用它来得到我所期望的.
所有这些都可以获得该函数的100%覆盖率(不包括异常行),还有许多其他例外情况.
测试这个的正确方法是什么,这样的代码是什么?
我究竟做错了什么?
经过大量的搜索和尝试如何在e2e测试中使用工厂,我决定最后在这里问.
我有一个工厂定义,有一些功能,如下:
regFormApp.factory('myFactory', ['$moment', function($moment) {
return {
title: 'Super Title 2014!',
dates: [
{
date: '2014-10-21',
time: '08:30',
timezone: 'America/Mexico_City'
},
{
date: '2014-10-22',
time: '08:30',
timezone: 'America/Mexico_City'
}
],
prices: {
earlyBird: 1250,
twoMonths: 1375,
last: 1700
},
salesEndDates: function(ticketType) {
var endDate = this.dates[0].date;
switch (ticketType) {
case 'earlyBird':
endDate = '2014-07-19';
break;
case 'twoMonths':
endDate = $moment(endDate)
.subtract('months', 2)
.format('YYYY-MM-DD');
break;
default:
break;
}
return endDate;
},
getSalesPeriod: function(_format) {
var format = _format || 'YYYY-MM-DD'; …Run Code Online (Sandbox Code Playgroud)