我需要编写一个单元测试来测试输入是否是有效的货币值。我尝试了几种方法,但我认为这不是测试货币价值的正确方法。
测试案例:
//API to get slot for a particular date range
app.get('/listcapacity/:ticketid/:fromdate/:todate', function (req, res) {
var id = req.params.ticketid;
var fromdate = req.params.fromdate;
var todate = req.params.todate;
var result = {};
var data_output = [];
var asyncTasks = [];
var currentDate = new Date(fromdate);
var between = [];
var end = new Date(todate);
while (currentDate <= end) {
var tempdate = new Date(currentDate).toISOString();
var dump = tempdate.toString().split("T");
between.push(dump[0]);
currentDate.setDate(currentDate.getDate() + 1);
}
between.forEach(function (entry) {
asyncTasks.push(function (callback) {
client.exists(id + entry, function (err, reply) {
if (reply === 1) {
console.log("Found");
client.get(id + entry, function (err, reply) {
var output = JSON.parse(reply);
data_output = data_output.concat(output);
return callback();
});
} else {
return callback();
}
});
});
});
async.parallel(asyncTasks, function () {
// All tasks are done now
result['data'] = data_output;
result['response'] = 1;
result['message'] = 'vacancies list fetched successfully!';
res.json(result);
});
});
}
UNIT TEST:
namespace validationUnitTest
{
// Validation rule for checking if the input is a valid currency value
public class CurrencyValidationRule: ValidationRule;
{
private static ValidationRule validationRule;
/// Singleton instance of this <see cref="ValidationRule"/>
public static ValidationRule Instance { get { return validationRule ?? (validationRule = new CurrencyValidationRule()); } }
// performs validation checks on a value
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
if (value is double) return ValidationResult.ValidResult;
string stringValue = value as string;
double result;
return string.IsNullOrEmpty(stringValue) || double.TryParse(stringValue, NumberStyles.Currency, cultureInfo, out result) ? ValidationResult.ValidResult : new ValidationResult(false, "Value must be an number");
}
}
}
我应该如何开始我的单元测试,或者我应该搜索什么?我需要一些起点。任何事情都非常感激。
答案 0 :(得分:1)
using System;
using System.Linq;
using Xunit;
using MonthlyStatements.Controllers;
using MonthlyStatements.Models;
using System.IO;
using System.Web.Mvc;
namespace UnitTestProject1
{
public class UnitTest1
{
[Theory]
[InlineData(10.20, "System.Double")]
[InlineData(0, "System.Double")]
public void checkValidation(double amt, string ExpectedResult)
{
//Arrange
string actualResult = "";
//Act
//double doubleAmt = double.Parse(amt.ToString());
actualResult = amt.GetType().ToString();
//Assert
Assert.Equal(ExpectedResult, actualResult);
}
}
}
答案 1 :(得分:0)
使用Xunit代替nUnit,在开始开发之前我们必须考虑以下
在上面的代码中你使用3断言它是不正确的方式,
在这里你可以检查数据实际结果的类型,使用xunit [InlineData()]
所以不需要重复代码。